發(fā)送報(bào)文的方法和裝置制造方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種發(fā)送報(bào)文的方法和裝置,屬于通信領(lǐng)域。所述方法包括:獲取當(dāng)前待發(fā)送的第一報(bào)文的發(fā)送時(shí)間戳和上一次發(fā)送的第二報(bào)文的發(fā)送時(shí)間戳,所述第一報(bào)文與所述第二報(bào)文屬于同一個(gè)報(bào)文流;判斷所述第一報(bào)文的發(fā)送時(shí)間戳與所述第二報(bào)文的發(fā)送時(shí)間戳之差是否大于預(yù)設(shè)的所述報(bào)文流的鏈路時(shí)延間隔;如果是,則在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇一條鏈路發(fā)送所述第一報(bào)文;否則,使用所述第二報(bào)文所用鏈路發(fā)送所述第一報(bào)文。所述裝置包括:獲取模塊、判斷模塊和處理模塊。本發(fā)明能夠保證報(bào)文分擔(dān)到不同路徑后不亂序,實(shí)現(xiàn)了動(dòng)態(tài)調(diào)整鏈路的負(fù)載分擔(dān),能夠有效地利用帶寬,提升了整體網(wǎng)絡(luò)性能。
【專(zhuān)利說(shuō)明】發(fā)送報(bào)文的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,特別涉及一種發(fā)送報(bào)文的方法和裝置。
【背景技術(shù)】
[0002]在網(wǎng)際協(xié)議(英文:Internet Protocol,縮寫(xiě):IP)網(wǎng)絡(luò)中,報(bào)文轉(zhuǎn)發(fā)到同一目的地的路徑可能有多個(gè),以實(shí)現(xiàn)負(fù)載分擔(dān)以及鏈路保護(hù)。
[0003]目前,負(fù)載分擔(dān)轉(zhuǎn)發(fā)報(bào)文的方式通常有兩種:逐包方式和逐流方式。逐包方式是指根據(jù)報(bào)文處理順序輪流選擇各分擔(dān)路徑,以保證分擔(dān)路徑流量均衡。逐流方式是指按照?qǐng)?bào)文流來(lái)確定對(duì)應(yīng)的負(fù)載分擔(dān)路徑,以保證同一條報(bào)文流經(jīng)過(guò)的路徑相同,從而避免引起報(bào)文傳輸亂序。
[0004]但是在實(shí)際應(yīng)用中,逐包方式下由于鏈路時(shí)延的差異,分擔(dān)到不同路徑后將導(dǎo)致報(bào)文的大量亂序,使得整體網(wǎng)絡(luò)性能下降。逐流方式下報(bào)文流在不同路徑上不能很好地散列開(kāi),可能導(dǎo)致某些鏈路擁擠而某些鏈路出現(xiàn)空閑,造成多路徑帶寬不能有效利用,也會(huì)使得整體網(wǎng)絡(luò)性能下降。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明提供了一種發(fā)送報(bào)文的方法和裝置,以提升網(wǎng)絡(luò)性能。所述技術(shù)方案如下:
[0006]第一方面,本發(fā)明提供了一種發(fā)送報(bào)文的方法,包括:
[0007]獲取當(dāng)前待發(fā)送的第一報(bào)文的發(fā)送時(shí)間戳和上一次發(fā)送的第二報(bào)文的發(fā)送時(shí)間戳,所述第一報(bào)文與所述第二報(bào)文屬于同一個(gè)報(bào)文流;
[0008]判斷所述第一報(bào)文的發(fā)送時(shí)間戳與所述第二報(bào)文的發(fā)送時(shí)間戳之差是否大于預(yù)設(shè)的所述報(bào)文流的鏈路時(shí)延間隔;
[0009]如果是,則在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇一條鏈路發(fā)送所述第一報(bào)文;
[0010]否則,使用所述第二報(bào)文所用鏈路發(fā)送所述第一報(bào)文。
[0011]結(jié)合第一方面,在第一種實(shí)施方式下,所述在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇一條鏈路發(fā)送所述第一報(bào)文,包括:
[0012]在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇已發(fā)送報(bào)文數(shù)量最小的鏈路發(fā)送所述第一報(bào)文。
[0013]結(jié)合第一方面,在第二種實(shí)施方式下,所述方法還包括:
[0014]獲取指定的多條鏈路的時(shí)延;
[0015]計(jì)算獲取的最大時(shí)延與最小時(shí)延之差,將結(jié)果作為所述報(bào)文流的鏈路時(shí)延間隔。
[0016]結(jié)合第一方面的第二種實(shí)施方式,在第三種實(shí)施方式下,所述獲取指定的多條鏈路的時(shí)延,包括:
[0017]在本地節(jié)點(diǎn)不存在聚合接口時(shí),獲取所述本地節(jié)點(diǎn)至所述第一報(bào)文的目的節(jié)點(diǎn)之間各條鏈路的時(shí)延;
[0018]在所述本地節(jié)點(diǎn)存在聚合接口時(shí),獲取所述本地節(jié)點(diǎn)至所述第一報(bào)文的下一跳節(jié)點(diǎn)之間各條鏈路的時(shí)延。
[0019]結(jié)合第一方面的第二種實(shí)施方式,在第四種實(shí)施方式下,所述獲取指定的多條鏈路的時(shí)延,包括:
[0020]獲取網(wǎng)絡(luò)中所有鏈路的時(shí)延。
[0021]結(jié)合第一方面,在第五種實(shí)施方式下,所述方法還包括:
[0022]在發(fā)送所述第一報(bào)文之后,在預(yù)先設(shè)置的鏈路權(quán)重中獲取發(fā)送所述第一報(bào)文的鏈路的權(quán)重,根據(jù)所述權(quán)重更新所述鏈路的已發(fā)送報(bào)文數(shù)量。
[0023]結(jié)合第一方面的第五種實(shí)施方式,在第六種實(shí)施方式下,所述根據(jù)所述權(quán)重更新所述鏈路的已發(fā)送報(bào)文數(shù)量,包括:
[0024]用所述第一報(bào)文的長(zhǎng)度除以所述權(quán)重,然后與所述鏈路的已發(fā)送報(bào)文數(shù)量相加求和,將所述鏈路的已發(fā)送報(bào)文數(shù)量更新為所述求和的結(jié)果。
[0025]第二方面,本發(fā)明提供了一種發(fā)送報(bào)文的裝置,包括:
[0026]獲取模塊,用于獲取當(dāng)前待發(fā)送的第一報(bào)文的發(fā)送時(shí)間戳和上一次發(fā)送的第二報(bào)文的發(fā)送時(shí)間戳,所述第一報(bào)文與所述第二報(bào)文屬于同一個(gè)報(bào)文流;
[0027]判斷模塊,用于判斷所述第一報(bào)文的發(fā)送時(shí)間戳與所述第二報(bào)文的發(fā)送時(shí)間戳之差是否大于預(yù)設(shè)的所述報(bào)文流的鏈路時(shí)延間隔;
[0028]處理模塊,用于如果所述判斷模塊判斷的結(jié)果為是,則在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇一條鏈路發(fā)送所述第一報(bào)文;否則,使用所述第二報(bào)文所用鏈路發(fā)送所述第一報(bào)文。
[0029]結(jié)合第二方面,在第一種實(shí)施方式下,所述處理模塊包括:
[0030]選擇單元,用于在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇已發(fā)送報(bào)文數(shù)量最小的鏈路發(fā)送所述第一報(bào)文。
[0031]結(jié)合第二方面,在第二種實(shí)施方式下,所述裝置還包括:
[0032]設(shè)置|旲塊,用于獲取指定的多條鏈路的時(shí)延,計(jì)算獲取的最大時(shí)延與最小時(shí)延之差,將結(jié)果作為所述報(bào)文流的鏈路時(shí)延間隔。
[0033]結(jié)合第二方面的第二種實(shí)施方式,在第三種實(shí)施方式下,所述設(shè)置模塊用于:
[0034]在本地節(jié)點(diǎn)不存在聚合接口時(shí),獲取所述本地節(jié)點(diǎn)至所述第一報(bào)文的目的節(jié)點(diǎn)之間各條鏈路的時(shí)延;
[0035]在所述本地節(jié)點(diǎn)存在聚合接口時(shí),獲取所述本地節(jié)點(diǎn)至所述第一報(bào)文的下一跳節(jié)點(diǎn)之間各條鏈路的時(shí)延。
[0036]結(jié)合第二方面的第二種實(shí)施方式,在第四種實(shí)施方式下,所述設(shè)置模塊用于:
[0037]獲取網(wǎng)絡(luò)中所有鏈路的時(shí)延。
[0038]結(jié)合第二方面,在第五種實(shí)施方式下,所述裝置還包括:
[0039]更新模塊,用于在發(fā)送所述第一報(bào)文之后,在預(yù)先設(shè)置的鏈路權(quán)重中獲取發(fā)送所述第一報(bào)文的鏈路的權(quán)重,根據(jù)所述權(quán)重更新所述鏈路的已發(fā)送報(bào)文數(shù)量。
[0040]結(jié)合第二方面的第五種實(shí)施方式,在第六種實(shí)施方式下,所述更新模塊用于:
[0041]在發(fā)送所述第一報(bào)文之后,在預(yù)先設(shè)置的鏈路權(quán)重中獲取發(fā)送所述第一報(bào)文的鏈路的權(quán)重,用所述第一報(bào)文的長(zhǎng)度除以所述權(quán)重,然后與所述鏈路的已發(fā)送報(bào)文數(shù)量相加求和,將所述鏈路的已發(fā)送報(bào)文數(shù)量更新為所述求和的結(jié)果。
[0042]本發(fā)明提供的技術(shù)方案帶來(lái)的有益效果是:獲取當(dāng)前待發(fā)送的第一報(bào)文的發(fā)送時(shí)間戳和上一次發(fā)送的第二報(bào)文的發(fā)送時(shí)間戳,所述第一報(bào)文與所述第二報(bào)文屬于同一個(gè)報(bào)文流;判斷所述第一報(bào)文的發(fā)送時(shí)間戳與所述第二報(bào)文的發(fā)送時(shí)間戳之差是否大于預(yù)設(shè)的所述報(bào)文流的鏈路時(shí)延間隔;如果是,則在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇一條鏈路發(fā)送所述第一報(bào)文;否則,使用所述第二報(bào)文所用鏈路發(fā)送所述第一報(bào)文;由于發(fā)送時(shí)間戳之差在鏈路時(shí)延間隔之內(nèi)的報(bào)文選用同一條鏈路發(fā)送,而發(fā)送時(shí)間戳之差大于鏈路時(shí)延間隔的報(bào)文使用不同的鏈路來(lái)發(fā)送,能夠保證報(bào)文分擔(dān)到不同路徑后不亂序,接收端可以免重組,且實(shí)現(xiàn)了動(dòng)態(tài)調(diào)整鏈路的負(fù)載分擔(dān),避免了單流長(zhǎng)時(shí)間占用一條鏈路導(dǎo)致?lián)砣蛴墟溌烽L(zhǎng)期空閑等負(fù)載不均衡的問(wèn)題。能夠有效地利用帶寬,提升了帶寬利用率以及整體網(wǎng)絡(luò)性能。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0043]為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0044]圖1是本發(fā)明一實(shí)施例提供的發(fā)送報(bào)文的方法流程圖;
[0045]圖2是本發(fā)明另一實(shí)施例提供的發(fā)送報(bào)文的方法流程圖;
[0046]圖3是本發(fā)明另一實(shí)施例提供的單向時(shí)延測(cè)量示意圖;
[0047]圖4是本發(fā)明另一實(shí)施例提供的發(fā)送報(bào)文的示意圖;
[0048]圖5是本發(fā)明另一實(shí)施例提供的無(wú)聚合接口的網(wǎng)絡(luò)架構(gòu)示意圖;
[0049]圖6是本發(fā)明另一實(shí)施例提供的有聚合接口的網(wǎng)絡(luò)架構(gòu)示意圖;
[0050]圖7是本發(fā)明另一實(shí)施例提供的發(fā)送報(bào)文的方法流程圖;
[0051]圖8是本發(fā)明另一實(shí)施例提供的發(fā)送報(bào)文的裝置結(jié)構(gòu)圖;
[0052]圖9是本發(fā)明另一實(shí)施例提供的發(fā)送報(bào)文的裝置結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0053]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
[0054]參見(jiàn)圖1,本發(fā)明一實(shí)施例提供了一種發(fā)送報(bào)文的方法,包括:
[0055]101:獲取當(dāng)前待發(fā)送的第一報(bào)文的發(fā)送時(shí)間戳和上一次發(fā)送的第二報(bào)文的發(fā)送時(shí)間戳,該第一報(bào)文與該第二報(bào)文屬于同一個(gè)報(bào)文流。
[0056]102:判斷該第一報(bào)文的發(fā)送時(shí)間戳與該第二報(bào)文的發(fā)送時(shí)間戳之差是否大于預(yù)設(shè)的該報(bào)文流的鏈路時(shí)延間隔;如果是,則執(zhí)行103 ;否則,執(zhí)行104。
[0057]其中,發(fā)送時(shí)間戳是指報(bào)文發(fā)送的時(shí)刻,此處不做過(guò)多說(shuō)明。報(bào)文流的鏈路時(shí)延間隔為預(yù)設(shè)的值,用來(lái)限制兩次報(bào)文發(fā)送之間的時(shí)間間隔,以保證接收端收到的報(bào)文不亂序,且能夠?qū)崿F(xiàn)多條鏈路的動(dòng)態(tài)負(fù)載均衡。
[0058]103:在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇一條鏈路發(fā)送該第一報(bào)文,流程結(jié)束。
[0059]這種情況下,兩次報(bào)文的發(fā)送時(shí)間戳之差滿(mǎn)足鏈路時(shí)延間隔,可以選用新的鏈路來(lái)發(fā)送第一報(bào)文,以避免鏈路負(fù)載不均衡,且保證接收端的報(bào)文不亂序。
[0060]104:使用該第二報(bào)文所用鏈路發(fā)送該第一報(bào)文,流程結(jié)束。
[0061]這種情況下,兩次報(bào)文的發(fā)送時(shí)間戳之差不滿(mǎn)足鏈路時(shí)延間隔,不能選用新的鏈路來(lái)發(fā)送第一報(bào)文,而是要選用與第二報(bào)文相同的鏈路來(lái)發(fā)送,才能夠保證接收端的報(bào)文不亂序。
[0062]本實(shí)施例提供的上述方法應(yīng)用于本地節(jié)點(diǎn)中,該本地節(jié)點(diǎn)為發(fā)送端設(shè)備,包括但不限于:計(jì)算機(jī)、筆記本電腦、平板電腦、手機(jī)、路由器、交換機(jī)等等,本實(shí)施例對(duì)此不做具體限定。其中,下一跳節(jié)點(diǎn)是指報(bào)文的發(fā)送路徑中與本地節(jié)點(diǎn)相鄰的下一個(gè)節(jié)點(diǎn),可以是中間節(jié)點(diǎn),或者也可以是目的節(jié)點(diǎn),本實(shí)施例對(duì)此也不做具體限定。
[0063]在本實(shí)施例的應(yīng)用場(chǎng)景中,本地節(jié)點(diǎn)和下一跳節(jié)點(diǎn)之間具有多條鏈路,至少為兩條。本地節(jié)點(diǎn)待發(fā)送的報(bào)文流為某個(gè)業(yè)務(wù)的報(bào)文流,如瀏覽網(wǎng)頁(yè)的報(bào)文流,或者下載文件的報(bào)文流,或者視頻聊天的報(bào)文流等等。該報(bào)文流中通常包括多個(gè)報(bào)文,其中,第一報(bào)文和第二報(bào)文為該報(bào)文流中的任意兩個(gè)相鄰的報(bào)文,第二報(bào)文為上一次已發(fā)送的報(bào)文,第一報(bào)文為本次將要發(fā)送的報(bào)文。
[0064]本實(shí)施例中,可選的,該在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇一條鏈路發(fā)送該第一報(bào)文,可以包括:
[0065]在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇已發(fā)送報(bào)文數(shù)量最小的鏈路發(fā)送該第一報(bào)文。
[0066]本實(shí)施例中,可選的,上述方法還可以包括:
[0067]獲取指定的多條鏈路的時(shí)延;
[0068]計(jì)算獲取的最大時(shí)延與最小時(shí)延之差,將結(jié)果作為該報(bào)文流的鏈路時(shí)延間隔。
[0069]本實(shí)施例中,進(jìn)一步地,所述獲取指定的多條鏈路的時(shí)延,可以包括:
[0070]在本地節(jié)點(diǎn)不存在聚合接口時(shí),獲取該本地節(jié)點(diǎn)至該第一報(bào)文的目的節(jié)點(diǎn)之間各條鏈路的時(shí)延;
[0071]在該本地節(jié)點(diǎn)存在聚合接口時(shí),獲取該本地節(jié)點(diǎn)至該第一報(bào)文的下一跳節(jié)點(diǎn)之間各條鏈路的時(shí)延。
[0072]本實(shí)施例中,可選的,所述獲取指定的多條鏈路的時(shí)延,可以包括:
[0073]獲取網(wǎng)絡(luò)中所有鏈路的時(shí)延。
[0074]本實(shí)施例中,可選的,上述方法還可以包括:
[0075]在發(fā)送所述第一報(bào)文之后,在預(yù)先設(shè)置的鏈路權(quán)重中獲取發(fā)送所述第一報(bào)文的鏈路的權(quán)重,根據(jù)所述權(quán)重更新所述鏈路的已發(fā)送報(bào)文數(shù)量。
[0076]本實(shí)施例中,可選的,所述根據(jù)所述權(quán)重更新所述鏈路的已發(fā)送報(bào)文數(shù)量,可以包括:
[0077]用所述第一報(bào)文的長(zhǎng)度除以所述權(quán)重,然后與所述鏈路的已發(fā)送報(bào)文數(shù)量相加求和,將所述鏈路的已發(fā)送報(bào)文數(shù)量更新為所述求和的結(jié)果。
[0078]本實(shí)施例提供的上述方法,獲取當(dāng)前待發(fā)送的第一報(bào)文的發(fā)送時(shí)間戳和上一次發(fā)送的第二報(bào)文的發(fā)送時(shí)間戳,所述第一報(bào)文與所述第二報(bào)文屬于同一個(gè)報(bào)文流;判斷所述第一報(bào)文的發(fā)送時(shí)間戳與所述第二報(bào)文的發(fā)送時(shí)間戳之差是否大于預(yù)設(shè)的所述報(bào)文流的鏈路時(shí)延間隔;如果是,則在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇一條鏈路發(fā)送所述第一報(bào)文;否則,使用所述第二報(bào)文所用鏈路發(fā)送所述第一報(bào)文;由于發(fā)送時(shí)間戳之差在鏈路時(shí)延間隔之內(nèi)的報(bào)文選用同一條鏈路發(fā)送,而發(fā)送時(shí)間戳之差大于鏈路時(shí)延間隔的報(bào)文使用不同的鏈路來(lái)發(fā)送,能夠保證報(bào)文分擔(dān)到不同路徑后不亂序,接收端可以免重組,且實(shí)現(xiàn)了動(dòng)態(tài)調(diào)整鏈路的負(fù)載分擔(dān),避免了單流長(zhǎng)時(shí)間占用一條鏈路導(dǎo)致?lián)砣蛴墟溌烽L(zhǎng)期空閑等負(fù)載不均衡的問(wèn)題。能夠有效地利用帶寬,提升了帶寬利用率以及整體網(wǎng)絡(luò)性能。
[0079]參見(jiàn)圖2,本發(fā)明另一實(shí)施例提供了一種發(fā)送報(bào)文的方法,包括:
[0080]201:獲取指定的多條鏈路的時(shí)延。
[0081]本實(shí)施例中,獲取鏈路時(shí)延可以采用單向時(shí)延測(cè)量(英文:0ne-way DelayMeasurement,縮寫(xiě):1DM)的方法。例如,參見(jiàn)圖3,節(jié)點(diǎn)I向節(jié)點(diǎn)2發(fā)送一個(gè)IDM報(bào)文,該報(bào)文中包含了發(fā)送時(shí)間戳。節(jié)點(diǎn)2收到該報(bào)文之后,解析出該發(fā)送時(shí)間戳,并將自身的接收時(shí)間戳與該發(fā)送時(shí)間戳相減得到節(jié)點(diǎn)I與節(jié)點(diǎn)2之間的鏈路的時(shí)延。
[0082]上述單向時(shí)延測(cè)量可以基于端口定時(shí)發(fā)起,如每隔0.5s發(fā)起等等,本實(shí)施例對(duì)此不做具體限定。
[0083]其中,可以通過(guò)操作管理維護(hù)(英文!Operat1n Administrat1n andMaintenance,縮寫(xiě):0AM)協(xié)議,如Y.1731 ETH-1DM協(xié)議來(lái)獲得鏈路的真實(shí)時(shí)延,當(dāng)然,也可以采用其他方法,比如靜態(tài)配置,或者其他協(xié)議或者私有協(xié)議等等來(lái)獲取時(shí)延,本實(shí)施例對(duì)此不做具體限定。
[0084]202:計(jì)算獲取的最大時(shí)延與最小時(shí)延之差,將結(jié)果作為該報(bào)文流的鏈路時(shí)延間隔。
[0085]獲取的鏈路時(shí)延為多個(gè),可以將這多個(gè)鏈路時(shí)延的值進(jìn)行比較,從而得到其中的最大時(shí)延和最小時(shí)延。例如,獲取N個(gè)鏈路時(shí)延,選出最大時(shí)延max和最小時(shí)延min,則計(jì)算得到該報(bào)文流的鏈路時(shí)延間隔為max-min。
[0086]203:獲取當(dāng)前待發(fā)送的第一報(bào)文的發(fā)送時(shí)間戳和上一次發(fā)送的第二報(bào)文的發(fā)送時(shí)間戳,該第一報(bào)文與該第二報(bào)文屬于同一個(gè)報(bào)文流。
[0087]204:判斷該第一報(bào)文的發(fā)送時(shí)間戳與該第二報(bào)文的發(fā)送時(shí)間戳之差是否大于預(yù)設(shè)的該報(bào)文流的鏈路時(shí)延間隔;如果是,則執(zhí)行205 ;否則,執(zhí)行206。
[0088]205:在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇一條鏈路發(fā)送該第一報(bào)文,流程結(jié)束。
[0089]206:使用該第二報(bào)文所用鏈路發(fā)送該第一報(bào)文,流程結(jié)束。
[0090]例如,參見(jiàn)圖4,為使用兩條鏈路發(fā)送報(bào)文的示意圖。其中,Tx為發(fā)送端,Rx為接收端。Tx和Rx之間存在兩條鏈路,鏈路I和鏈路2,且時(shí)延分別為dl和d2。Tx側(cè)的報(bào)文流輸入包括4個(gè)報(bào)文,分別為報(bào)文1、報(bào)文2、報(bào)文3和報(bào)文4。Tx側(cè)在tl時(shí)刻往鏈路2上發(fā)送了報(bào)文4,在t2時(shí)刻往鏈路I上發(fā)送了三個(gè)報(bào)文:報(bào)文3、報(bào)文2和報(bào)文1,且發(fā)送時(shí)間戳之差Dt = t2-tl。Rx側(cè)在t3時(shí)刻接收到報(bào)文4,在t4時(shí)刻收到報(bào)文3、報(bào)文2和報(bào)文I。由鏈路時(shí)延可以得出:t3 = tl+d2, t4 = t2+dl = Dt+tl+dl。當(dāng)兩次報(bào)文的發(fā)送時(shí)間戳之差Dt滿(mǎn)足Dt〉I dl—d2 I 時(shí),可以得出:t4 _ t3 = Dt+tl+dl_(tl+d2) = Dt+dl_d2〉| dl—d2 | +dl—d2 ^ O,因此,可以保證在Rx側(cè)報(bào)文4 一定早于報(bào)文3、報(bào)文2和報(bào)文I到達(dá),接收到的報(bào)文順序與Tx側(cè)發(fā)送的報(bào)文的順序一致,從而保證了接收的報(bào)文不亂序,避免了報(bào)文重組。
[0091]本實(shí)施例中,步驟201可以采用以下任意一種方式來(lái)實(shí)現(xiàn):
[0092]第一種方式:獲取網(wǎng)絡(luò)中所有鏈路的時(shí)延。
[0093]第二種方式:在本地節(jié)點(diǎn)不存在聚合接口時(shí),獲取該本地節(jié)點(diǎn)至該第一報(bào)文的目的節(jié)點(diǎn)之間各條鏈路的時(shí)延。
[0094]第三種方式:在該本地節(jié)點(diǎn)存在聚合接口時(shí),獲取該本地節(jié)點(diǎn)至該第一報(bào)文的下一跳節(jié)點(diǎn)之間各條鏈路的時(shí)延。
[0095]聚合接口是指多個(gè)物理接口在邏輯上綁定為I個(gè)接口,該邏輯接口成為trunk聚合接口。本實(shí)施例中的聚合接口是指報(bào)文的發(fā)送接口。
[0096]本實(shí)施例提供的上述方法可以應(yīng)用于任何類(lèi)型的網(wǎng)絡(luò)中。下面以Spine-1eaf (骨干節(jié)點(diǎn)-葉子節(jié)點(diǎn))結(jié)構(gòu)的DC(Data Center,數(shù)據(jù)中心)網(wǎng)絡(luò)為例來(lái)說(shuō)明上述具有聚合接口的場(chǎng)景,以及不具有聚合接口的場(chǎng)景。
[0097]例如,參見(jiàn)圖5,為本地節(jié)點(diǎn)不具有聚合接口的場(chǎng)景示意圖。其中,DC網(wǎng)絡(luò)中有兩個(gè)骨干節(jié)點(diǎn)SI和S2,四個(gè)葉子節(jié)點(diǎn)L1、L2、L3和L4。本地節(jié)點(diǎn)LI不具有聚合接口,且發(fā)送報(bào)文至目的節(jié)點(diǎn)L4,則有兩條可選鏈路,Iinkl為L(zhǎng)1->S1->L4,link2為L(zhǎng)1->S2_>L4。
[0098]例如,參見(jiàn)圖6,為本地節(jié)點(diǎn)具有聚合接口的場(chǎng)景示意圖。其中,DC網(wǎng)絡(luò)中有兩個(gè)骨干節(jié)點(diǎn)SI和S2,四個(gè)葉子節(jié)點(diǎn)L1、L2、L3和L4。本地節(jié)點(diǎn)LI具有聚合接口,其中至SI的鏈路包括al和a2,這兩條鏈路與LI所連的兩個(gè)物理接口在邏輯上綁定為一個(gè)接口。LI至S2的鏈路包括Cl和c2,這兩條鏈路與LI所連的兩個(gè)物理接口在邏輯上綁定為一個(gè)接口。S2至L4之間有兩條鏈路f I和f2。當(dāng)LI發(fā)送報(bào)文至L4時(shí),經(jīng)過(guò)SI的鏈路包括兩條,分別為:al->b, a2->b ;經(jīng)過(guò)S2的鏈路包括四條,分別為:cl->fl, cl_>f2,c2_>fl,c2_>f2。
[0099]上述第一種方式中,從獲取的網(wǎng)絡(luò)中所有鏈路的時(shí)延中選出最大時(shí)延和最小時(shí)延,從而可以計(jì)算出系統(tǒng)級(jí)的鏈路時(shí)延間隔,粒度較粗,但是算法簡(jiǎn)單、效率較高。該鏈路時(shí)延間隔可以表示如下:
[0100]Gap = max {dl, d2, d3, d4...dn} -min {dl, d2, d3, d4...dn};
[0101]其中,Gap表示鏈路時(shí)延間隔,網(wǎng)絡(luò)中一共有η條鏈路,dl, d2…dn分別表示這η條鏈路的時(shí)延。
[0102]上述第二種方式和第三種方式都是選取指定的鏈路來(lái)計(jì)算,可以得到鏈路級(jí)的鏈路時(shí)延間隔,粒度較細(xì),計(jì)算結(jié)果更精確。
[0103]在第二種方式中,由于本地節(jié)點(diǎn)不存在聚合接口,可以不用考慮下一跳節(jié)點(diǎn),直接選取本地節(jié)點(diǎn)至目的節(jié)點(diǎn)之間各條鏈路的時(shí)延來(lái)計(jì)算該報(bào)文流的鏈路時(shí)延間隔。
[0104]例如,在圖5所示的場(chǎng)景中,本地節(jié)點(diǎn)不具有聚合接口,LI發(fā)送報(bào)文至目的節(jié)點(diǎn)L4,有兩條可選鏈路,linkl:L1->S1->L4, link2:L1->S2_>L4。其中,Iinkl鏈路的時(shí)延為dl, link2鏈路的時(shí)延為d2,且d2>dl,則用最大時(shí)延減去最小時(shí)延得到報(bào)文流的鏈路時(shí)延間隔為 Gap = d2-dl。
[0105]在第三種方式中,由于本地節(jié)點(diǎn)存在聚合接口,則選取本地節(jié)點(diǎn)至第一報(bào)文的下一跳節(jié)點(diǎn)之間各條鏈路的時(shí)延來(lái)計(jì)算報(bào)文流的鏈路時(shí)延間隔。
[0106]例如,在圖6所示的場(chǎng)景中,本地節(jié)點(diǎn)具有聚合接口,LI發(fā)送第一報(bào)文至L4。LI的下一跳有兩個(gè),一個(gè)是SI,另一個(gè)是S2,LI至SI的鏈路包括:al和a2,鏈路時(shí)延分別為dl和d2。LI至S2的鏈路包括:cl和c2,鏈路時(shí)延分別為d3和d4。則計(jì)算報(bào)文流的鏈路時(shí)延間隔如下:
[0107]Gap = max {dl, d2, d3, d4} -min {dl, d2, d3, d4};
[0108]其中,Gap表示報(bào)文流的鏈路時(shí)延間隔,dl,d2, d3, d4為L(zhǎng)I至下一跳節(jié)點(diǎn)之間的4條鏈路。
[0109]通常,可以在簡(jiǎn)單平坦式組網(wǎng)中,如layer2Spine-Leaf且無(wú)trunk的網(wǎng)絡(luò)中,負(fù)載分擔(dān)算法可以采用鏈路級(jí)的鏈路時(shí)延間隔,使得算法可以基于鏈路做更細(xì)粒度的負(fù)載分擔(dān)。在其他組網(wǎng)中,可以采用系統(tǒng)級(jí)的鏈路時(shí)延間隔來(lái)滿(mǎn)足負(fù)載分擔(dān)算法要求,提高傳輸效率。
[0110]本實(shí)施例提供的上述方法,獲取指定的多條鏈路的時(shí)延,計(jì)算獲取的最大時(shí)延與最小時(shí)延之差,將結(jié)果作為該報(bào)文流的鏈路時(shí)延間隔;獲取當(dāng)前待發(fā)送的第一報(bào)文的發(fā)送時(shí)間戳和上一次發(fā)送的第二報(bào)文的發(fā)送時(shí)間戳,所述第一報(bào)文與所述第二報(bào)文屬于同一個(gè)報(bào)文流;判斷所述第一報(bào)文的發(fā)送時(shí)間戳與所述第二報(bào)文的發(fā)送時(shí)間戳之差是否大于預(yù)設(shè)的所述報(bào)文流的鏈路時(shí)延間隔;如果是,則在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇一條鏈路發(fā)送所述第一報(bào)文;否則,使用所述第二報(bào)文所用鏈路發(fā)送所述第一報(bào)文;由于發(fā)送時(shí)間戳之差在鏈路時(shí)延間隔之內(nèi)的報(bào)文選用同一條鏈路發(fā)送,而發(fā)送時(shí)間戳之差大于鏈路時(shí)延間隔的報(bào)文使用不同的鏈路來(lái)發(fā)送,能夠保證報(bào)文分擔(dān)到不同路徑后不亂序,接收端可以免重組,且實(shí)現(xiàn)了動(dòng)態(tài)調(diào)整鏈路的負(fù)載分擔(dān),避免了單流長(zhǎng)時(shí)間占用一條鏈路導(dǎo)致?lián)砣蛴墟溌烽L(zhǎng)期空閑等負(fù)載不均衡的問(wèn)題。能夠有效地利用帶寬,提升了帶寬利用率以及整體網(wǎng)絡(luò)性能。特別是針對(duì)Spine-Leaf平坦結(jié)構(gòu)的DC網(wǎng)絡(luò)中,更能夠?qū)崟r(shí)精確的根據(jù)鏈路實(shí)時(shí)擁塞程度和時(shí)延獲得網(wǎng)絡(luò)性能提升收益。
[0111]參見(jiàn)圖7,本發(fā)明一實(shí)施例提供了一種發(fā)送報(bào)文的方法,包括:
[0112]701:獲取當(dāng)前待發(fā)送的第一報(bào)文的發(fā)送時(shí)間戳和上一次發(fā)送的第二報(bào)文的發(fā)送時(shí)間戳,該第一報(bào)文與該第二報(bào)文屬于同一個(gè)報(bào)文流。
[0113]其中,報(bào)文的發(fā)送時(shí)間戳可以從流信息表中獲取。該流信息表可以記錄與報(bào)文流有關(guān)的各種信息,包括但不限于:鏈路時(shí)延間隔、報(bào)文的發(fā)送時(shí)間戳等等,進(jìn)一步地還可以包括上一次發(fā)送報(bào)文的路徑ID等等,本實(shí)施例對(duì)此不做具體限定。
[0114]702:判斷該第一報(bào)文的發(fā)送時(shí)間戳與該第二報(bào)文的發(fā)送時(shí)間戳之差是否大于預(yù)設(shè)的該報(bào)文流的鏈路時(shí)延間隔;如果是,則執(zhí)行703 ;否則,執(zhí)行704。
[0115]703:在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇已發(fā)送報(bào)文數(shù)量最小的鏈路發(fā)送該第一報(bào)文,然后執(zhí)行705。
[0116]其中,鏈路已發(fā)送報(bào)文數(shù)量可以在每次發(fā)送報(bào)文之后計(jì)算得到,并且,在每次發(fā)送報(bào)文之后都對(duì)鏈路已發(fā)送報(bào)文數(shù)量進(jìn)行更新,以便后續(xù)進(jìn)行鏈路的選擇。
[0117]704:使用該第二報(bào)文所用鏈路發(fā)送該第一報(bào)文,然后執(zhí)行705。
[0118]705:在發(fā)送該第一報(bào)文之后,在預(yù)先設(shè)置的鏈路權(quán)重中獲取發(fā)送所述第一報(bào)文的鏈路的權(quán)重,根據(jù)所述權(quán)重更新所述鏈路的已發(fā)送報(bào)文數(shù)量,流程結(jié)束。
[0119]本實(shí)施例中,優(yōu)選地,可以根據(jù)帶寬為不同的鏈路設(shè)置不同的權(quán)重,且根據(jù)權(quán)重來(lái)更新鏈路已發(fā)送報(bào)文數(shù)量,以便更好地結(jié)合帶寬的實(shí)際情況來(lái)選擇鏈路。
[0120]可選的,所述根據(jù)所述權(quán)重更新所述鏈路的已發(fā)送報(bào)文數(shù)量,可以包括:
[0121]用所述第一報(bào)文的長(zhǎng)度除以所述權(quán)重,然后與所述鏈路的已發(fā)送報(bào)文數(shù)量相加求和,將所述鏈路的已發(fā)送報(bào)文數(shù)量更新為所述求和的結(jié)果。
[0122]具體地,可以用如下公式來(lái)表示:
[0123]cnt+ = pkt/weight ;
[0124]其中,cnt為鏈路的已發(fā)送報(bào)文數(shù)量,pkt為該鏈路發(fā)送的報(bào)文的長(zhǎng)度,weight為該鏈路的權(quán)重。初始時(shí)可以為一條鏈路設(shè)置一個(gè)初始權(quán)重值。
[0125]本實(shí)施例中,所述鏈路權(quán)重、鏈路已發(fā)送報(bào)文數(shù)量等信息可以記錄在鏈路權(quán)重表中,且每次計(jì)算出新的鏈路已發(fā)送報(bào)文數(shù)量都更新在該鏈路權(quán)重表中,以便后續(xù)查找鏈路的已發(fā)送報(bào)文數(shù)量。
[0126]這種基于鏈路已發(fā)送報(bào)文數(shù)量來(lái)選擇鏈路的方式,嚴(yán)格地保證了報(bào)文接收的順序與報(bào)文發(fā)送的順序一致,無(wú)需接收端進(jìn)行報(bào)文重組,極大地提高了效率,節(jié)省了資源。
[0127]本實(shí)施例中,所述預(yù)先設(shè)置的權(quán)重可以為靜態(tài)配置的權(quán)重,或者也可以為動(dòng)態(tài)計(jì)算出來(lái)的權(quán)重。所述動(dòng)態(tài)計(jì)算具體地可以為通過(guò)OAM協(xié)議,如Y.173IETH-LB來(lái)獲取鏈路的吞吐量,再根據(jù)該吞吐量來(lái)計(jì)算出權(quán)重,其中,可以定時(shí)根據(jù)鏈路的吞吐量來(lái)計(jì)算權(quán)重,本實(shí)施例對(duì)此不做具體限定。
[0128]本實(shí)施例中,當(dāng)采用流信息表來(lái)記錄信息時(shí),由于鏈路時(shí)延通常都在毫秒ms級(jí)另O,流信息表只需要記錄正在鏈路上傳輸?shù)膱?bào)文流即可滿(mǎn)足本方法,因此,流信息表所占的資源也很小,不會(huì)對(duì)系統(tǒng)造成影響。下面舉例說(shuō)明。例如,網(wǎng)絡(luò)帶寬為lOOGbps,網(wǎng)絡(luò)上平均包長(zhǎng)為512B,則計(jì)算如下:
[0129]Flows = 100*1000*1000Kbps/((512+8+12)*8)/1000 = 23.5K ;
[0130]其中,flows為流信息表的數(shù)量,就是表內(nèi)的表項(xiàng)個(gè)數(shù),100*1000*1000Kbps是指將帶寬由Gbps轉(zhuǎn)化為Kbps,第一個(gè)8為前導(dǎo)碼的長(zhǎng)度,12為幀間隙,第二個(gè)8表示將字節(jié)轉(zhuǎn)換為比特位,除以1000表示流信息表只需要記錄鏈路時(shí)延(毫秒ms)級(jí)別內(nèi)的報(bào)文流。
[0131]實(shí)際情況下,根據(jù)用戶(hù)報(bào)文突發(fā)以及TCP/UDP特征,如果出現(xiàn)報(bào)文流內(nèi)報(bào)文數(shù)量的增加,則隨之流信息表數(shù)量呈線性下降,所占資源會(huì)更小。上述計(jì)算結(jié)果為帶寬全部占用的最?lèi)毫忧闆r,流信息表的數(shù)量為k (千條)級(jí)別,可見(jiàn)即使在最?lèi)毫忧闆r下,流信息表所占用的資源也很小,不會(huì)對(duì)系統(tǒng)造成影響。
[0132]本實(shí)施例提供的上述方法,獲取當(dāng)前待發(fā)送的第一報(bào)文的發(fā)送時(shí)間戳和上一次發(fā)送的第二報(bào)文的發(fā)送時(shí)間戳,所述第一報(bào)文與所述第二報(bào)文屬于同一個(gè)報(bào)文流;判斷所述第一報(bào)文的發(fā)送時(shí)間戳與所述第二報(bào)文的發(fā)送時(shí)間戳之差是否大于預(yù)設(shè)的所述報(bào)文流的鏈路時(shí)延間隔;如果是,則在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇且已發(fā)送報(bào)文數(shù)量最小的鏈路發(fā)送所述第一報(bào)文;否則,使用所述第二報(bào)文所用鏈路發(fā)送所述第一報(bào)文;由于發(fā)送時(shí)間戳之差在鏈路時(shí)延間隔之內(nèi)的報(bào)文選用同一條鏈路發(fā)送,而發(fā)送時(shí)間戳之差大于鏈路時(shí)延間隔的報(bào)文使用不同的鏈路來(lái)發(fā)送,能夠保證報(bào)文分擔(dān)到不同路徑后不亂序,接收端可以免重組,且實(shí)現(xiàn)了動(dòng)態(tài)調(diào)整鏈路的負(fù)載分擔(dān),避免了單流長(zhǎng)時(shí)間占用一條鏈路導(dǎo)致?lián)砣蛴墟溌烽L(zhǎng)期空閑等負(fù)載不均衡的問(wèn)題。能夠有效地利用帶寬,提升了帶寬利用率以及整體網(wǎng)絡(luò)性能。另外,基于鏈路已發(fā)送報(bào)文數(shù)量來(lái)選擇鏈路的方式,嚴(yán)格地保證了報(bào)文接收的順序與報(bào)文發(fā)送的順序一致,無(wú)需接收端進(jìn)行報(bào)文重組,極大地提高了效率,節(jié)省了資源。
[0133]參見(jiàn)圖8,本發(fā)明另一實(shí)施例提供了一種發(fā)送報(bào)文的裝置,包括:
[0134]獲取模塊801,用于獲取當(dāng)前待發(fā)送的第一報(bào)文的發(fā)送時(shí)間戳和上一次發(fā)送的第二報(bào)文的發(fā)送時(shí)間戳,該第一報(bào)文與該第二報(bào)文屬于同一個(gè)報(bào)文流;
[0135]判斷模塊802,用于判斷該第一報(bào)文的發(fā)送時(shí)間戳與該第二報(bào)文的發(fā)送時(shí)間戳之差是否大于預(yù)設(shè)的該報(bào)文流的鏈路時(shí)延間隔;
[0136]處理模塊803,用于如果該判斷模塊判斷的結(jié)果為是,則在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇一條鏈路發(fā)送該第一報(bào)文;否則,使用該第二報(bào)文所用鏈路發(fā)送該第一報(bào)文。
[0137]本實(shí)施例中,可選的,處理模塊803可以包括:
[0138]選擇單元,用于在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇已發(fā)送報(bào)文數(shù)量最小的鏈路發(fā)送該第一報(bào)文。
[0139]本實(shí)施例中,可選的,上述裝置還可以包括:
[0140]設(shè)置|旲塊,用于獲取指定的多條鏈路的時(shí)延,計(jì)算獲取的最大時(shí)延與最小時(shí)延之差,將結(jié)果作為該報(bào)文流的鏈路時(shí)延間隔。
[0141]本實(shí)施例中,可選的,設(shè)置模塊可以用于:
[0142]在本地節(jié)點(diǎn)不存在聚合接口時(shí),獲取該本地節(jié)點(diǎn)至該第一報(bào)文的目的節(jié)點(diǎn)之間各條鏈路的時(shí)延;
[0143]在該本地節(jié)點(diǎn)存在聚合接口時(shí),獲取該本地節(jié)點(diǎn)至該第一報(bào)文的下一跳節(jié)點(diǎn)之間各條鏈路的時(shí)延。
[0144]本實(shí)施例中,可選的,設(shè)置模塊可以用于:
[0145]獲取網(wǎng)絡(luò)中所有鏈路的時(shí)延。
[0146]本實(shí)施例中,可選的,上述裝置還可以包括:
[0147]更新模塊,用于在發(fā)送所述第一報(bào)文之后,在預(yù)先設(shè)置的鏈路權(quán)重中獲取發(fā)送所述第一報(bào)文的鏈路的權(quán)重,根據(jù)所述權(quán)重更新所述鏈路的已發(fā)送報(bào)文數(shù)量。
[0148]進(jìn)一步地,上述更新模塊可以用于:
[0149]在發(fā)送所述第一報(bào)文之后,在預(yù)先設(shè)置的鏈路權(quán)重中獲取發(fā)送所述第一報(bào)文的鏈路的權(quán)重,用所述第一報(bào)文的長(zhǎng)度除以所述權(quán)重,然后與所述鏈路的已發(fā)送報(bào)文數(shù)量相加求和,將所述鏈路的已發(fā)送報(bào)文數(shù)量更新為所述求和的結(jié)果。
[0150]本實(shí)施例提供的上述裝置可以執(zhí)行上述任一方法實(shí)施例中提供的方法,詳細(xì)過(guò)程見(jiàn)方法實(shí)施例中的描述,此處不贅述。
[0151]本實(shí)施例提供的上述裝置,獲取當(dāng)前待發(fā)送的第一報(bào)文的發(fā)送時(shí)間戳和上一次發(fā)送的第二報(bào)文的發(fā)送時(shí)間戳,所述第一報(bào)文與所述第二報(bào)文屬于同一個(gè)報(bào)文流;判斷所述第一報(bào)文的發(fā)送時(shí)間戳與所述第二報(bào)文的發(fā)送時(shí)間戳之差是否大于預(yù)設(shè)的所述報(bào)文流的鏈路時(shí)延間隔;如果是,則在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇一條鏈路發(fā)送所述第一報(bào)文;否則,使用所述第二報(bào)文所用鏈路發(fā)送所述第一報(bào)文;由于發(fā)送時(shí)間戳之差在鏈路時(shí)延間隔之內(nèi)的報(bào)文選用同一條鏈路發(fā)送,而發(fā)送時(shí)間戳之差大于鏈路時(shí)延間隔的報(bào)文使用不同的鏈路來(lái)發(fā)送,能夠保證報(bào)文分擔(dān)到不同路徑后不亂序,接收端可以免重組,且實(shí)現(xiàn)了動(dòng)態(tài)調(diào)整鏈路的負(fù)載分擔(dān),避免了單流長(zhǎng)時(shí)間占用一條鏈路導(dǎo)致?lián)砣蛴墟溌烽L(zhǎng)期空閑等負(fù)載不均衡的問(wèn)題。能夠有效地利用帶寬,提升了帶寬利用率以及整體網(wǎng)絡(luò)性能。
[0152]參見(jiàn)圖9,本發(fā)明另一實(shí)施例提供了一種發(fā)送報(bào)文的裝置,包括:
[0153]處理器901,用于獲取當(dāng)前待發(fā)送的第一報(bào)文的發(fā)送時(shí)間戳和上一次發(fā)送的第二報(bào)文的發(fā)送時(shí)間戳,該第一報(bào)文與該第二報(bào)文屬于同一個(gè)報(bào)文流;判斷該第一報(bào)文的發(fā)送時(shí)間戳與該第二報(bào)文的發(fā)送時(shí)間戳之差是否大于預(yù)設(shè)的該報(bào)文流的鏈路時(shí)延間隔;如果判斷的結(jié)果為是,則在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇一條鏈路;否則,選擇該第二報(bào)文所用鏈路;
[0154]發(fā)射機(jī)902,用于使用處理器901選擇的鏈路發(fā)送該第一報(bào)文。
[0155]本實(shí)施例中,可選的,處理器901可以用于:
[0156]在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇已發(fā)送報(bào)文數(shù)量最小的鏈路。
[0157]本實(shí)施例中,可選的,處理器901還可以用于:
[0158]獲取指定的多條鏈路的時(shí)延,計(jì)算獲取的最大時(shí)延與最小時(shí)延之差,將結(jié)果作為該報(bào)文流的鏈路時(shí)延間隔。
[0159]本實(shí)施例中,可選的,處理器901可以用于:
[0160]在本地節(jié)點(diǎn)不存在聚合接口時(shí),獲取該本地節(jié)點(diǎn)至該第一報(bào)文的目的節(jié)點(diǎn)之間各條鏈路的時(shí)延;
[0161]在該本地節(jié)點(diǎn)存在聚合接口時(shí),獲取該本地節(jié)點(diǎn)至該第一報(bào)文的下一跳節(jié)點(diǎn)之間各條鏈路的時(shí)延。
[0162]本實(shí)施例中,可選的,處理器901可以用于:
[0163]獲取網(wǎng)絡(luò)中所有鏈路的時(shí)延。
[0164]本實(shí)施例中,可選的,處理器901還可以用于:
[0165]在發(fā)射機(jī)發(fā)送所述第一報(bào)文之后,在預(yù)先設(shè)置的鏈路權(quán)重中獲取發(fā)送所述第一報(bào)文的鏈路的權(quán)重,根據(jù)所述權(quán)重更新所述鏈路的已發(fā)送報(bào)文數(shù)量。
[0166]進(jìn)一步地,上述處理器901可以用于:
[0167]在發(fā)射機(jī)發(fā)送所述第一報(bào)文之后,在預(yù)先設(shè)置的鏈路權(quán)重中獲取發(fā)送所述第一報(bào)文的鏈路的權(quán)重,用所述第一報(bào)文的長(zhǎng)度除以所述權(quán)重,然后與所述鏈路的已發(fā)送報(bào)文數(shù)量相加求和,將所述鏈路的已發(fā)送報(bào)文數(shù)量更新為所述求和的結(jié)果。
[0168]本實(shí)施例提供的上述裝置可以執(zhí)行上述任一方法實(shí)施例中提供的方法,詳細(xì)過(guò)程見(jiàn)方法實(shí)施例中的描述,此處不贅述。
[0169]本實(shí)施例提供的上述裝置,獲取當(dāng)前待發(fā)送的第一報(bào)文的發(fā)送時(shí)間戳和上一次發(fā)送的第二報(bào)文的發(fā)送時(shí)間戳,所述第一報(bào)文與所述第二報(bào)文屬于同一個(gè)報(bào)文流;判斷所述第一報(bào)文的發(fā)送時(shí)間戳與所述第二報(bào)文的發(fā)送時(shí)間戳之差是否大于預(yù)設(shè)的所述報(bào)文流的鏈路時(shí)延間隔;如果是,則在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇一條鏈路發(fā)送所述第一報(bào)文;否則,使用所述第二報(bào)文所用鏈路發(fā)送所述第一報(bào)文;由于發(fā)送時(shí)間戳之差在鏈路時(shí)延間隔之內(nèi)的報(bào)文選用同一條鏈路發(fā)送,而發(fā)送時(shí)間戳之差大于鏈路時(shí)延間隔的報(bào)文使用不同的鏈路來(lái)發(fā)送,能夠保證報(bào)文分擔(dān)到不同路徑后不亂序,接收端可以免重組,且實(shí)現(xiàn)了動(dòng)態(tài)調(diào)整鏈路的負(fù)載分擔(dān),避免了單流長(zhǎng)時(shí)間占用一條鏈路導(dǎo)致?lián)砣蛴墟溌烽L(zhǎng)期空閑等負(fù)載不均衡的問(wèn)題。能夠有效地利用帶寬,提升了帶寬利用率以及整體網(wǎng)絡(luò)性能。
[0170] 本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過(guò)硬件來(lái)完成,也可以通過(guò)程序來(lái)指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤(pán)或光盤(pán)等。
[0171 ] 以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種發(fā)送報(bào)文的方法,其特征在于,所述方法包括: 獲取當(dāng)前待發(fā)送的第一報(bào)文的發(fā)送時(shí)間戳和上一次發(fā)送的第二報(bào)文的發(fā)送時(shí)間戳,所述第一報(bào)文與所述第二報(bào)文屬于同一個(gè)報(bào)文流; 判斷所述第一報(bào)文的發(fā)送時(shí)間戳與所述第二報(bào)文的發(fā)送時(shí)間戳之差是否大于預(yù)設(shè)的所述報(bào)文流的鏈路時(shí)延間隔; 如果是,則在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇一條鏈路發(fā)送所述第一報(bào)文; 否則,使用所述第二報(bào)文所用鏈路發(fā)送所述第一報(bào)文。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇一條鏈路發(fā)送所述第一報(bào)文,包括: 在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇已發(fā)送報(bào)文數(shù)量最小的鏈路發(fā)送所述第一報(bào)文。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 獲取指定的多條鏈路的時(shí)延; 計(jì)算獲取的最大時(shí)延與最小時(shí)延之差,將結(jié)果作為所述報(bào)文流的鏈路時(shí)延間隔。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述獲取指定的多條鏈路的時(shí)延,包括: 在本地節(jié)點(diǎn)不存在聚合接口時(shí),獲取所述本地節(jié)點(diǎn)至所述第一報(bào)文的目的節(jié)點(diǎn)之間各條鏈路的時(shí)延; 在所述本地節(jié)點(diǎn)存在聚合接口時(shí),獲取所述本地節(jié)點(diǎn)至所述第一報(bào)文的下一跳節(jié)點(diǎn)之間各條鏈路的時(shí)延。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述獲取指定的多條鏈路的時(shí)延,包括: 獲取網(wǎng)絡(luò)中所有鏈路的時(shí)延。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 在發(fā)送所述第一報(bào)文之后,在預(yù)先設(shè)置的鏈路權(quán)重中獲取發(fā)送所述第一報(bào)文的鏈路的權(quán)重,根據(jù)所述權(quán)重更新所述鏈路的已發(fā)送報(bào)文數(shù)量。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述根據(jù)所述權(quán)重更新所述鏈路的已發(fā)送報(bào)文數(shù)量,包括: 用所述第一報(bào)文的長(zhǎng)度除以所述權(quán)重,然后與所述鏈路的已發(fā)送報(bào)文數(shù)量相加求和,將所述鏈路的已發(fā)送報(bào)文數(shù)量更新為所述求和的結(jié)果。
8.—種發(fā)送報(bào)文的裝置,其特征在于,所述裝置包括: 獲取模塊,用于獲取當(dāng)前待發(fā)送的第一報(bào)文的發(fā)送時(shí)間戳和上一次發(fā)送的第二報(bào)文的發(fā)送時(shí)間戳,所述第一報(bào)文與所述第二報(bào)文屬于同一個(gè)報(bào)文流; 判斷模塊,用于判斷所述第一報(bào)文的發(fā)送時(shí)間戳與所述第二報(bào)文的發(fā)送時(shí)間戳之差是否大于預(yù)設(shè)的所述報(bào)文流的鏈路時(shí)延間隔; 處理模塊,用于如果所述判斷模塊判斷的結(jié)果為是,則在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇一條鏈路發(fā)送所述第一報(bào)文;否則,使用所述第二報(bào)文所用鏈路發(fā)送所述第一報(bào)文。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述處理模塊包括: 選擇單元,用于在本地節(jié)點(diǎn)至下一跳節(jié)點(diǎn)之間的多條鏈路中,選擇已發(fā)送報(bào)文數(shù)量最小的鏈路發(fā)送所述第一報(bào)文。
10.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括: 設(shè)置模塊,用于獲取指定的多條鏈路的時(shí)延,計(jì)算獲取的最大時(shí)延與最小時(shí)延之差,將結(jié)果作為所述報(bào)文流的鏈路時(shí)延間隔。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述設(shè)置模塊用于: 在本地節(jié)點(diǎn)不存在聚合接口時(shí),獲取所述本地節(jié)點(diǎn)至所述第一報(bào)文的目的節(jié)點(diǎn)之間各條鏈路的時(shí)延; 在所述本地節(jié)點(diǎn)存在聚合接口時(shí),獲取所述本地節(jié)點(diǎn)至所述第一報(bào)文的下一跳節(jié)點(diǎn)之間各條鏈路的時(shí)延。
12.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述設(shè)置模塊用于: 獲取網(wǎng)絡(luò)中所有鏈路的時(shí)延。
13.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括: 更新模塊,用于在發(fā)送所述第一報(bào)文之后,在預(yù)先設(shè)置的鏈路權(quán)重中獲取發(fā)送所述第一報(bào)文的鏈路的權(quán)重,根據(jù)所述權(quán)重更新所述鏈路的已發(fā)送報(bào)文數(shù)量。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述更新模塊用于: 在發(fā)送所述第一報(bào)文之后,在預(yù)先設(shè)置的鏈路權(quán)重中獲取發(fā)送所述第一報(bào)文的鏈路的權(quán)重,用所述第一報(bào)文的長(zhǎng)度除以所述權(quán)重,然后與所述鏈路的已發(fā)送報(bào)文數(shù)量相加求和,將所述鏈路的已發(fā)送報(bào)文數(shù)量更新為所述求和的結(jié)果。
【文檔編號(hào)】H04L12/813GK104168212SQ201410389330
【公開(kāi)日】2014年11月26日 申請(qǐng)日期:2014年8月8日 優(yōu)先權(quán)日:2014年8月8日
【發(fā)明者】郭佳春, 郭英輝, 游南林, 徐萬(wàn)才 申請(qǐng)人:北京華為數(shù)字技術(shù)有限公司