組播報文轉(zhuǎn)發(fā)方法和設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù),特別涉及組播報文轉(zhuǎn)發(fā)方法和設(shè)備。
【背景技術(shù)】
[0002]在IPv6組播轉(zhuǎn)發(fā)流程中,從組播源端到目的端所經(jīng)過的各個鏈路可能具有不同的最大傳輸單元(MTU: Maxi mum Transmiss1n Unit),當組播數(shù)據(jù)報文的長度大于鏈路MTU時,如果能在組播源端將組播數(shù)據(jù)報文按照所有鏈路MTU中的最小值進行分片,就可以減輕介于組播源端與目的端之間的路由轉(zhuǎn)發(fā)設(shè)備的處理壓力,合理利用網(wǎng)絡(luò)資源。然而要達到這種效果,關(guān)鍵在于如何從組播源端到目的端的鏈路中發(fā)現(xiàn)MTU取值最小的鏈路。這里,為便于描述,將從組播源端到目的端的鏈路中MTU取值最小的鏈路稱為路徑最大傳輸單元(PMTU:Path Maximum Transmiss1n Unit)。
[0003]參見圖1,圖1為現(xiàn)有PMTU發(fā)現(xiàn)的組網(wǎng)示意圖。如圖1所示,主機A為組播組A(該組播組A的組播組地址224.1.2.3)的組播源,主機C為組播組A的組播接收者,也即目的端。當作為組播源的主機A向組播組地址224.1.2.3.發(fā)送組播數(shù)據(jù)報文時,在初始按照自身允許的MTU(取值為1500)對待發(fā)送的組播數(shù)據(jù)報文進行分片并發(fā)送。
[0004]路由轉(zhuǎn)發(fā)設(shè)備(Router)A至C任一設(shè)備接收到組播數(shù)據(jù)報文時,執(zhí)行以下步驟:
[0005]依據(jù)接收的組播數(shù)據(jù)報文的組播組IP地址在本地路由表項中確定用于轉(zhuǎn)發(fā)該組播數(shù)據(jù)報文的接口;
[0006]比較該確定的用于轉(zhuǎn)發(fā)該組播數(shù)據(jù)報文的接口支持的MTU值與接收的組播數(shù)據(jù)報文的長度;
[0007]如果前者大于或者等于后者,則通過該確定的用于轉(zhuǎn)發(fā)該組播數(shù)據(jù)報文的接口轉(zhuǎn)發(fā)該組播數(shù)據(jù)報文;比如,圖1中,R0UterA接收到組播數(shù)據(jù)報文時,依據(jù)組播數(shù)據(jù)報文的組播組IP地址224.1.2.3在本地路由表項中確定用于轉(zhuǎn)發(fā)該組播數(shù)據(jù)報文的接口為本地以太口(ethl),并且,發(fā)現(xiàn)ethl支持的MTU值為1500,正好等于接收的組播數(shù)據(jù)報文的長度1500,則通過ethl繼續(xù)轉(zhuǎn)發(fā)該接收的組播數(shù)據(jù)報文。
[0008]如果前者小于后者,則丟棄該接收的組播數(shù)據(jù)報文,并向組播源返回一個互聯(lián)網(wǎng)控制信息協(xié)議版本 6 (ICMPv6:1nternet Control Managemet Protocol Vers1n 6)規(guī)定的ICMPv6差錯報文(其實質(zhì)用于通知數(shù)據(jù)報文過大),其中包含了該接口的MTU。比如,圖1中,Router B接收到組播數(shù)據(jù)報文時,依據(jù)組播數(shù)據(jù)報文的組播組IP地址224.1.2.3在本地路由表項中確定本地用于轉(zhuǎn)發(fā)該組播數(shù)據(jù)報文的接口為本地以太口 eth2,并且,發(fā)現(xiàn)eth2支持的MTU值為1350,小于接收的組播數(shù)據(jù)報文的長度1500,則丟棄接收的組播數(shù)據(jù)報文,并向組播源端發(fā)送ICMPv6差錯報文,ICMPv6差錯報文攜帶了 eth2支持的MTU值1350ο
[0009]當組播源端收到ICMPv6差錯報文后,將按照報文中所攜帶的MTU值即1350重新對組播數(shù)據(jù)報文進行分片并發(fā)送。如此反復,直到目的端(主機C)收到發(fā)送的組播數(shù)據(jù)報文。
[0010]可以看出,現(xiàn)有PMTU發(fā)現(xiàn)流程中,需要每一路由轉(zhuǎn)發(fā)設(shè)備執(zhí)行上述步驟,會增加路由轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)壓力,并且,也會延長從組播源端到目的端的鏈路中發(fā)現(xiàn)MTU取值最小的鏈路的時間。
【發(fā)明內(nèi)容】
[0011]本發(fā)明提供了組播報文的轉(zhuǎn)發(fā)方法和設(shè)備,以減緩路由轉(zhuǎn)發(fā)設(shè)備的壓力,縮短從組播源端到目的端的鏈路中發(fā)現(xiàn)MTU取值最小的鏈路的時間。
[0012]本發(fā)明提供的技術(shù)方案包括:
[0013]一種組播報文的轉(zhuǎn)發(fā)方法,該方法應(yīng)用于路由轉(zhuǎn)發(fā)設(shè)備,包括:
[0014]接收組播數(shù)據(jù)報文,
[0015]判斷本地是否存在與所述組播數(shù)據(jù)報文攜帶的組播組地址對應(yīng)的組播表項,
[0016]如果是,依據(jù)本地存在的與所述組播組地址對應(yīng)的組播表項中的出接口轉(zhuǎn)發(fā)所述組播數(shù)據(jù)報文;
[0017]如果否,丟棄所述組播數(shù)據(jù)報文,在本地建立與所述組播組地址對應(yīng)的組播表項,將本地已記錄的對應(yīng)所述組播組地址的接口作為出接口添加至該建立的組播表項,在添加的出接口個數(shù)等于I時,將該添加的出接口支持的最大傳輸單元MTU值、以及所述組播組地址攜帶在設(shè)定的通知報文中發(fā)送給所述組播組地址對應(yīng)的組播源,在添加的出接口個數(shù)大于I時,將該添加的各個出接口支持的MTU值中取值最小的MTU值、以及所述組播組地址攜帶在設(shè)定的通知報文中發(fā)送給所述組播源。
[0018]一種組播報文的轉(zhuǎn)發(fā)方法,該方法應(yīng)用于組播源,包括:
[0019]在向組播組地址發(fā)送組播數(shù)據(jù)報文時,識別本地是否已記錄與所述組播組地址對應(yīng)的最大傳輸單元MTU值,如果是,依據(jù)記錄的與所述組播組地址對應(yīng)的MTU值對待發(fā)送的組播數(shù)據(jù)報文分片并發(fā)送,如果否,依據(jù)自身支持的MTU值對待發(fā)送的組播數(shù)據(jù)報文分片并發(fā)送;
[0020]接收路由轉(zhuǎn)發(fā)設(shè)備發(fā)送的通知報文,判斷本地是否記錄與所述通知報文攜帶的組播組地址對應(yīng)的MTU值,如果是,在本地記錄的與所述通知報文攜帶的組播組地址對應(yīng)的MTU值大于所述通知報文攜帶的MTU值時,將本地記錄的與所述通知報文攜帶的組播組地址對應(yīng)的MTU值更新為所述通知報文攜帶的MTU值,依據(jù)更新后的MTU值重新對待發(fā)送的組播數(shù)據(jù)報文進行分片并發(fā)送,如果否,將所述通知報文攜帶的組播組地址和MTU值對應(yīng)記錄至本地,并依據(jù)所述通知報文攜帶的MTU值重新對所述待發(fā)送的組播數(shù)據(jù)報文進行分片并發(fā)送。
[0021]一種組播報文的轉(zhuǎn)發(fā)設(shè)備,該設(shè)備應(yīng)用于路由轉(zhuǎn)發(fā)設(shè)備,包括:
[0022]接收單元,用于接收組播數(shù)據(jù)報文;
[0023]判斷單元,用于判斷本地是否存在與所述組播數(shù)據(jù)報文攜帶的組播組地址對應(yīng)的組播表項,
[0024]處理單元,用于在所述判斷單元的判斷結(jié)果為是時,依據(jù)本地存在的與所述組播組地址對應(yīng)的組播表項中的出接口轉(zhuǎn)發(fā)所述組播數(shù)據(jù)報文;以及,
[0025]在所述判斷單元的判斷結(jié)果為否時,丟棄所述組播數(shù)據(jù)報文,在本地建立與所述組播組地址對應(yīng)的組播表項,將本地已記錄的對應(yīng)所述組播組地址的接口作為出接口添加至該建立的組播表項,在添加的出接口個數(shù)等于I時,將該添加的出接口支持的最大傳輸單元MTU值、以及所述組播組地址攜帶在設(shè)定的通知報文中發(fā)送給所述組播組地址對應(yīng)的組播源,在添加的出接口個數(shù)大于I時,將該添加的各個出接口支持的MTU值中取值最小的MTU值、以及所述組播組地址攜帶在設(shè)定的通知報文中發(fā)送給所述組播源。
[0026]一種組播報文的轉(zhuǎn)發(fā)設(shè)備,該設(shè)備應(yīng)用于作為組播源的主機設(shè)備,包括:
[0027]發(fā)送單元,用于在向組播組地址發(fā)送組播數(shù)據(jù)報文時,識別本地是否已記錄對應(yīng)所述組播組地址的最大傳輸單元MTU值,如果是,依據(jù)記錄的對應(yīng)所述組播組地址的MTU值對待發(fā)送的組播數(shù)據(jù)報文分片并發(fā)送,如果否,依據(jù)自身支持的MTU值對待發(fā)送的組播數(shù)據(jù)報文分片并發(fā)送;
[0028]接收單元,用于接收路由轉(zhuǎn)發(fā)設(shè)備發(fā)送的通知報文;
[0029]判斷單元,用于判斷本地是否記錄與所述通知報文攜帶的組播組地址對應(yīng)的MTU值;
[0030]處理單元,用于在所述判斷單元的判斷結(jié)果為是時,且在本地記錄的與所述通知報文攜帶的組播組地址對應(yīng)的MTU值大于所述通知報文攜帶的MTU值時,將本地記錄的與所述通知報文攜帶的組播組地址對應(yīng)的MTU值更新為所述通知報文攜帶的MTU值,并觸發(fā)所述發(fā)送單元依據(jù)更新后的MTU值重新對所述待發(fā)送的組播數(shù)據(jù)報文進行分片并發(fā)送,以及,在所述判斷單元的判斷結(jié)果為否時,在本地對應(yīng)記錄所述通知報文攜帶的組播組地址和MTU值,并觸發(fā)所述發(fā)送單元依據(jù)所述通知報文攜帶的MTU值重新對所述待發(fā)送的組播數(shù)據(jù)報文進行分片并發(fā)送。
[0031]由以上技術(shù)方案可以看出,本發(fā)明中,當路由轉(zhuǎn)發(fā)設(shè)備接收到組播數(shù)據(jù)報文時,判斷本地是否存在與組播數(shù)據(jù)報文攜帶的組播組地址對應(yīng)的組播表項,當判斷出本地存在與所述組播組地址對應(yīng)的組播表項時,可以直接利用本地存在的與所述組播組地址對應(yīng)的組播表項中的出接口轉(zhuǎn)發(fā)組播數(shù)據(jù)報文即可,不用再查找路由,比較路由出接口與組播數(shù)據(jù)報文的長度,顯然減緩路由轉(zhuǎn)發(fā)設(shè)備的壓力,并且,通過判斷本地不存在與所述組播數(shù)據(jù)報文攜帶的組播組地址對應(yīng)的組播表項時執(zhí)行的步驟可以看出,本地存在的與所述組播組地址對應(yīng)的組播表項中的出接口是基于MTU取值最小的鏈路發(fā)現(xiàn)的,這顯然縮短了從組播源到目的端鏈路中發(fā)現(xiàn)MTU取值最小的鏈路的時間。
【附圖說明】
[0032]圖1為現(xiàn)有PMTU發(fā)現(xiàn)的組網(wǎng)示意圖;
[0033]圖2為本發(fā)明提供的方法流程圖;
[0034]圖3為本發(fā)明提供的實施例示意圖;
[0035]圖4為本發(fā)明提供的設(shè)備結(jié)構(gòu)圖;
[0036]圖5為本發(fā)明提供的另一設(shè)備結(jié)構(gòu)圖。
【具體實施方式】
[0037]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖和具體實施例對本發(fā)明進行詳細描述。
[0038]本發(fā)明提供的方法優(yōu)化了現(xiàn)有PMTU發(fā)現(xiàn)流程,相比于現(xiàn)有PMTU發(fā)現(xiàn)流程,能夠減緩路由轉(zhuǎn)發(fā)設(shè)備的壓力,縮短從組播源端到目的端鏈路中發(fā)現(xiàn)MTU取值最小的鏈路的時間。
[0039]下面通過圖2對本發(fā)明提供的方法進行描述;
[0040]參見圖2,圖2為本發(fā)明提供的方法流程圖。如圖2所示,該流程可包括以下步驟:
[0041]步驟201,組播源在向組播組地址發(fā)送組播數(shù)據(jù)報文時,識別本地是否已記錄對應(yīng)所述組播組地址的MTU值,如果是,依據(jù)本地記錄的對應(yīng)所述組播組地址的MTU值對待發(fā)送的組播數(shù)據(jù)報文分片并發(fā)送,如果否,依據(jù)自身支持的MTU值對待發(fā)送的組播數(shù)據(jù)報文分片并發(fā)送。
[0042]步驟202,路由轉(zhuǎn)發(fā)設(shè)備接收到組播數(shù)據(jù)報文時執(zhí)行以下步驟203至步驟205。
[0043]這里,路由轉(zhuǎn)發(fā)設(shè)備接收的組播數(shù)據(jù)報文是經(jīng)過組播源端分片的組播數(shù)據(jù)報文。
[0044]步驟203,判斷本地是否存在與組播數(shù)據(jù)報文攜帶的組播組地址對應(yīng)的組播表項,如果是,執(zhí)行步驟204,如果否,執(zhí)行步驟205。
[0045]作為本發(fā)明的一個實施例,步驟203中,可以以組播數(shù)據(jù)報文攜帶的組播組地址為關(guān)鍵字在本地