本發(fā)明涉及網(wǎng)絡(luò)技術(shù),更具體地,涉及一種基于協(xié)議無關(guān)組播(Protocol Independent Multicast,PIM)協(xié)議的選舉方法、指定路由器(Designated Routers,DR)故障處理的方法及相應的設(shè)備。
背景技術(shù):
在一個共享網(wǎng)絡(luò)如以太網(wǎng)絡(luò)的子網(wǎng)中,PIM設(shè)備(也可稱為PIM路由器)基于協(xié)議無關(guān)組播協(xié)議選舉出DR。具體地,PIM設(shè)備在接口UP(協(xié)議中規(guī)定的一種狀態(tài))后默認自己是DR,收到Hello報文(協(xié)議中規(guī)定的一種報文)重新進行DR選舉,以選出新的DR。因特網(wǎng)組管理協(xié)議(IGMP)或組播偵聽發(fā)現(xiàn)協(xié)議(MLD)用戶加入或離開組的報文會被網(wǎng)絡(luò)中所有設(shè)備都收到,DR負責向子網(wǎng)中的用戶轉(zhuǎn)發(fā)組播流量。
當子網(wǎng)中當選DR出故障時,子網(wǎng)中需要重新選舉DR向網(wǎng)絡(luò)中轉(zhuǎn)發(fā)流量。這個過程有以下延時:檢測到DR故障的時間T1;向上游匯聚節(jié)點(RP)或直連源的DR設(shè)備發(fā)送PIM加入的時間T2;流量推送到新的DR設(shè)備的時間T3。用戶會在T1+T2+T3時間范圍內(nèi)丟包,這還不考慮設(shè)備路由下發(fā)轉(zhuǎn)發(fā)面的時間。在復雜組網(wǎng)或容量環(huán)境里,這個時延表現(xiàn)的更為明顯。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明提供了一種DR故障處理的方法,包括:
子網(wǎng)中的候選指定路由器(BDR:Backup Designated Routers)在有用戶加入時,完成為所述用戶轉(zhuǎn)發(fā)組播流量的準備但不通過接口轉(zhuǎn)發(fā)組播流量;
所述BDR檢測到所述子網(wǎng)發(fā)生DR故障時,即自動切換為所述子網(wǎng)的DR并通過接口為所述用戶轉(zhuǎn)發(fā)組播流量。
可選地,
所述子網(wǎng)中的BDR是按照權(quán)利要求1-15中任一所述的方法選舉或重新選舉的。
可選地,
所述BDR完成為所述用戶轉(zhuǎn)發(fā)組播流量的準備,包括:引入組播流量和建立到用戶的轉(zhuǎn)發(fā)路由。
相應地,本發(fā)明還提供了一種候選指定路由器,包括:
準備模塊,用于在子網(wǎng)中有用戶加入時,完成為所述用戶轉(zhuǎn)發(fā)組播流量的準備但不通過接口轉(zhuǎn)發(fā)組播流量;
切換模塊,用于在檢測到所述子網(wǎng)發(fā)生指定路由器故障時,即自動切換為所述子網(wǎng)的指定路由器并通過接口為所述用戶轉(zhuǎn)發(fā)組播流量。
可選地,
所述候選指定路由器按照如下文所述的方法選舉或重新選舉的。
可選地,
所述準備模塊完成為所述用戶轉(zhuǎn)發(fā)組播流量的準備,包括:引入組播流量和建立到用戶的轉(zhuǎn)發(fā)路由。
與現(xiàn)有技術(shù)相比,上述方案通過預先選好BDR,把組播流量引入BDR,BDR檢測到DR故障立即向子網(wǎng)中用戶轉(zhuǎn)發(fā)流量,從而極大減少DR故障造成的網(wǎng)絡(luò)丟包,是對標準的有益補充。
有鑒于此,本發(fā)明還提供了一種選舉候選指定路由器的方法,包括:
所述PIM設(shè)備根據(jù)約定規(guī)則選舉所述子網(wǎng)中的候選指定路由器BDR;
所述PIM設(shè)備保存所述子網(wǎng)中BDR的信息。
可選地,
所述約定規(guī)則包括:選舉所述子網(wǎng)中除指定路由器DR之外的PIM設(shè)備中最優(yōu)的PIM設(shè)備,作為所述子網(wǎng)中的BDR。
可選地,
所述PIM設(shè)備的接口接收和發(fā)送的Hello報文均攜帶DR優(yōu)先級選項;所述最優(yōu)的PIM設(shè)備是指優(yōu)先級最高的唯一一個PIM設(shè)備,或優(yōu)先級最高的多個PIM設(shè)備中IP地址最大或最小的PIM設(shè)備;或者
所述PIM設(shè)備的接口接收和發(fā)送的至少一Hello報文不攜帶DR優(yōu)先級選項;所述最優(yōu)的PIM設(shè)備是指IP地址最大或最小的PIM設(shè)備。
可選地,
所述PIM設(shè)備根據(jù)約定規(guī)則選舉所述子網(wǎng)中的BDR,包括:
所述PIM設(shè)備在等待選舉狀態(tài)下,如通過接口接收到Hello報文且所述Hello報文攜帶BDR的信息,則將所述BDR作為自己選舉的BDR。
可選地,
所述PIM設(shè)備的接口在子網(wǎng)中UP之后即進入所述等待選舉狀態(tài),啟動一等待選舉的定時器;
所述PIM設(shè)備在等待選舉狀態(tài)下,如通過所述接口接收到Hello報文且所述Hello報文攜帶BDR的信息,即進入選舉狀態(tài),停止所述定時器,將所述Hello報文攜帶的BDR作為自己選舉的BDR。
可選地,
所述PIM設(shè)備根據(jù)約定規(guī)則選舉所述子網(wǎng)中的BDR,包括:
所述PIM設(shè)備在所述定時器超時后,即進入選舉狀態(tài),根據(jù)約定規(guī)則選舉所述子網(wǎng)中的BDR。
可選地,
所述BDR的信息包括BDR的合法單播地址;
所述接收到的Hello報文攜帶BDR的信息,包括:接收到的Hello報文中包含BDR地址選項且所述BDR地址選項的值為合法單播地址。
可選地,
所述方法還包括:
所述PIM設(shè)備在等待選舉狀態(tài)下,通過所述接口發(fā)送攜帶BDR地址選項的Hello報文且所述BDR地址選項的值為約定的無效值。
可選地,
所述PIM設(shè)備進入選舉狀態(tài)之后,還包括:
所述PIM設(shè)備如通過所述接口接收到攜帶BDR地址選項的Hello報文且所述BDR地址選項的值為約定的無效值,則通過所述接口發(fā)送攜帶BDR地址選項的Hello報文且所述BDR地址選項的值為保存的所述子網(wǎng)中BDR的合法單播地址。
可選地,
所述PIM設(shè)備進入選舉狀態(tài)之后,還包括:
所述PIM設(shè)備檢測到所述子網(wǎng)中的BDR故障后,如保存的所述子網(wǎng)中BDR的信息仍為故障的BDR的信息,則根據(jù)約定規(guī)則重新選舉所述子網(wǎng)中的BDR,并更新保存的所述子網(wǎng)中BDR的信息。
可選地,
所述PIM設(shè)備進入選舉狀態(tài)之后,還包括:
所述PIM設(shè)備如通過所述接口接收到Hello報文且所述Hello報文攜帶的BDR的信息不同于保存的所述子網(wǎng)中BDR的信息;
如本PIM設(shè)備非所述子網(wǎng)中的BDR,將所述Hello報文攜帶的BDR作為自己重新選舉的所述子網(wǎng)中的BDR,并更新保存的所述子網(wǎng)中BDR的信息;
如本PIM設(shè)備為所述子網(wǎng)中的BDR,根據(jù)所述約定規(guī)則重新選舉所述子網(wǎng)中的BDR,并更新保存的所述子網(wǎng)中BDR的信息。
可選地,
所述子網(wǎng)中的BDR在所述子網(wǎng)中的DR正常時,完成為用戶轉(zhuǎn)發(fā)組播流量的準備但不通過接口轉(zhuǎn)發(fā)組播流量,在所述子網(wǎng)中的DR故障時,立即為用戶轉(zhuǎn)發(fā)組播流量,并切換為所述子網(wǎng)中的DR。
可選地,
所述PIM設(shè)備保存所述子網(wǎng)中BDR的信息或更新保存的所述子網(wǎng)中BDR的信息之后,還包括:通過接口發(fā)送Hello報文,在所述Hello報文中攜帶保存的所述子網(wǎng)中BDR的信息。
可選地,
所述PIM設(shè)備根據(jù)約定規(guī)則選舉所述子網(wǎng)中的BDR,包括:
所述子網(wǎng)中除BDR之外的PIM設(shè)備檢測到所述子網(wǎng)的DR故障時,將已選舉的所述子網(wǎng)中的BDR選舉為所述子網(wǎng)中的DR,并根據(jù)所述約定規(guī)則重新選舉所述子網(wǎng)中的BDR。
可選地,
所述PIM設(shè)備根據(jù)約定規(guī)則選舉所述子網(wǎng)中的BDR,包括:
所述PIM設(shè)備不支持在Hello報文中攜帶BDR地址選項和/或通過接口接收到的至少一Hello報文中不包括BDR地址選項時,在選舉所述子網(wǎng)中的DR的同時,根據(jù)約定規(guī)則選舉所述子網(wǎng)中的BDR。
可選地,
所述定時器的定時時間大于或等于鄰居的默認?;顣r間。
相應地,本發(fā)明還提供了一種協(xié)議無關(guān)組播PIM設(shè)備,包括:
接口模塊,用于接收和發(fā)送Hello報文;
選舉模塊,用于根據(jù)約定規(guī)則選舉所述子網(wǎng)中的候選指定路由器BDR。
存儲模塊,用于保存所述子網(wǎng)中BDR的信息。
可選地,
所述選舉模塊根據(jù)的約定規(guī)則包括:選舉所述子網(wǎng)中除指定路由器DR之外的PIM設(shè)備中最優(yōu)的PIM設(shè)備,作為所述子網(wǎng)中的BDR。
可選地,
所述接口模塊接收和發(fā)送的Hello報文均攜帶DR優(yōu)先級選項;所述最優(yōu) 的PIM設(shè)備是指優(yōu)先級最高的唯一一個PIM設(shè)備,或優(yōu)先級最高的多個PIM設(shè)備中IP地址最大或最小的PIM設(shè)備;或者
所述接口模塊接收或發(fā)送的至少一PIM設(shè)備不攜帶DR優(yōu)先級選項;所述最優(yōu)的PIM設(shè)備是指IP地址最大或最小的PIM設(shè)備。
可選地,
所述選舉模塊根據(jù)約定規(guī)則選舉所述子網(wǎng)中的BDR,包括:
所述選舉模塊在等待選舉狀態(tài)下,如所述接口模塊接收到Hello報文且所述Hello報文攜帶BDR的信息,則將所述Hello報文攜帶的BDR作為自己選舉的BDR。
可選地,
所述選舉模塊在所述接口模塊在子網(wǎng)中UP之后即進入所述等待選舉狀態(tài),啟動一等待選舉的定時器;
所述選舉模塊在等待選舉狀態(tài)下,如所述接口模塊接收到Hello報文且所述Hello報文攜帶BDR的信息,即進入選舉狀態(tài),停止所述定時器,將所述BDR作為自己選舉的BDR。
可選地,
所述選舉模塊根據(jù)約定規(guī)則選舉所述子網(wǎng)中的BDR,包括:
所述選舉模塊在所述定時器超時后,即進入選舉狀態(tài),根據(jù)約定規(guī)則選舉所述子網(wǎng)中的候選指定路由器BDR。
可選地,
所述BDR的信息包括BDR的合法單播地址;
所述接口模塊接收到的Hello報文攜帶BDR的信息,包括:接收到的Hello報文中包含BDR地址選項且所述BDR地址選項的值為合法單播地址。
可選地,
所述接口模塊發(fā)送Hello報文,包括:在等待選舉狀態(tài)下,發(fā)送攜帶BDR地址選項的Hello報文且所述BDR地址選項的值為約定的無效值。
可選地,
所述接口模塊還用于在進入選舉狀態(tài)之后,如接收到攜帶BDR地址選項的Hello報文且所述BDR地址選項的值為約定的無效值,則發(fā)送攜帶BDR地址選項的Hello報文且所述BDR地址選項的值為保存的所述子網(wǎng)中BDR的合法單播地址。
可選地,
所述PIM設(shè)備還包括:檢測模塊,用于檢測所述子網(wǎng)中的BDR故障;
所述選舉模塊還用于在進入選舉狀態(tài)之后,如所述檢測模塊檢測到所述子網(wǎng)中的BDR故障,且保存的所述子網(wǎng)中BDR的信息仍為故障的BDR的信息,則根據(jù)約定規(guī)則重新選舉所述子網(wǎng)中的BDR,并通知存儲模塊更新保存的所述子網(wǎng)中BDR的信息。
可選地,
所述選舉模塊還用于在進入選舉狀態(tài)之后,如所述接口模塊接收到Hello報文且所述Hello報文攜帶的BDR的信息不同于所述存儲模塊保存的所述子網(wǎng)中BDR的信息:
在本PIM設(shè)備非所述子網(wǎng)中的BDR時,將所述Hello報文攜帶的BDR作為自己重新選舉的所述子網(wǎng)中的BDR,并更新所述存儲模塊保存的所述子網(wǎng)中BDR的信息;
在本PIM設(shè)備為所述子網(wǎng)中的BDR時,根據(jù)所述約定規(guī)則重新選舉所述子網(wǎng)中的BDR,并更新所述存儲模塊保存的所述子網(wǎng)中BDR的信息。
可選地,
所述子網(wǎng)中的BDR在所述子網(wǎng)中的DR正常時,完成為用戶轉(zhuǎn)發(fā)組播流量的準備但不通過接口轉(zhuǎn)發(fā)組播流量,在所述子網(wǎng)中的DR故障時,立即為用戶轉(zhuǎn)發(fā)組播流量,并切換為所述子網(wǎng)中的DR。
可選地,
所述接口模塊還用于在保存所述子網(wǎng)中BDR的信息或更新保存的所述子網(wǎng)中BDR的信息之后,發(fā)送Hello報文,在所述Hello報文中攜帶所述存儲模塊保存的所述子網(wǎng)中BDR的信息。
可選地,
所述選舉模塊還用于在檢測到所述子網(wǎng)的DR故障且本PIM設(shè)備非所述子網(wǎng)中的BDR時,將已選舉的所述子網(wǎng)中的BDR選舉為所述子網(wǎng)中的DR,并根據(jù)所述約定規(guī)則重新選舉所述子網(wǎng)中的BDR。
可選地,
所述選舉模塊根據(jù)約定規(guī)則選舉所述子網(wǎng)中的BDR,包括:在所述接口模塊不支持在Hello報文中攜帶BDR地址選項和/或通過所述接口模塊接收到的Hello報文中不包括BDR地址選項時,所述選舉模塊在選舉所述子網(wǎng)中的DR的同時,根據(jù)約定規(guī)則選舉所述子網(wǎng)中的BDR。
可選地,
所述定時器的定時時間大于或等于鄰居的默認?;顣r間。
上述方案可以選舉出子網(wǎng)中的BDR,以實現(xiàn)DR故障的快速恢復,并且,還可以通過在Hello報文中攜帶BDR的信息,使得新加入PIM設(shè)備時不會導致BDR設(shè)備的切換,有利于網(wǎng)絡(luò)的性能。
附圖說明
圖1本發(fā)明實施例一DR故障處理的方法的流程圖;
圖2本發(fā)明實施例一BDR的模塊圖;
圖3本發(fā)明實施例二選舉BDR的方法的流程圖;
圖4發(fā)明實施例二PIM設(shè)備的模塊圖;
圖5是本發(fā)明應用示例組播網(wǎng)絡(luò)拓撲示意圖;
圖6是本發(fā)明應用示例中Hello報文的BDR地址選項的結(jié)構(gòu)圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方法和優(yōu)點更加清楚,下面將詳述其發(fā)明方法,同時結(jié)合附圖對本發(fā)明進行詳細描述,沒有特別說明的部分和標準RFC4601規(guī)定的協(xié)議行為一致。
實施例一
為了實現(xiàn)DR故障時快速恢復向用戶轉(zhuǎn)發(fā)組播流量,本實施例預先選好BDR,并把組播流量引入BDR,BDR檢測到DR故障立即向子網(wǎng)中用戶轉(zhuǎn)發(fā)流量,從而減少DR故障造成的網(wǎng)絡(luò)丟包。
如圖1所示,本實施例DR故障處理的方法包括:
步驟110,子網(wǎng)中的BDR在有用戶加入時,完成為所述用戶轉(zhuǎn)發(fā)組播流量的準備但不通過接口轉(zhuǎn)發(fā)組播流量;
本步驟中,BDR完成為所述用戶轉(zhuǎn)發(fā)組播流量的準備可以包括:引入組播流量和建立到用戶的轉(zhuǎn)發(fā)路由。具體地,用戶加入(Local Membership)時。BDR可以按照協(xié)議規(guī)定(如RFC4601的規(guī)定)的DR行為,完成為所述用戶轉(zhuǎn)發(fā)組播流量的準備,把流量引下來并在路由表中建立到用戶的轉(zhuǎn)發(fā)路由但不在接口轉(zhuǎn)發(fā)組播流量,待檢測到DR故障后立即轉(zhuǎn)發(fā)。
步驟120,BDR檢測到所述子網(wǎng)發(fā)生DR故障時,即自動切換為所述子網(wǎng)的DR并通過接口為所述用戶轉(zhuǎn)發(fā)組播流量。
相應地,本實施例的BDR如圖2所示,包括:
準備模塊10,用于在子網(wǎng)中有用戶加入時,完成為所述用戶轉(zhuǎn)發(fā)組播流量的準備但不通過接口轉(zhuǎn)發(fā)組播流量;
切換模塊20,用于在檢測到所述子網(wǎng)發(fā)生指定路由器故障時,即自動切換為所述子網(wǎng)的指定路由器并通過接口為所述用戶轉(zhuǎn)發(fā)組播流量。
可選地,
所述準備模塊完成為所述用戶轉(zhuǎn)發(fā)組播流量的準備,包括:引入組播流量和建立到用戶的轉(zhuǎn)發(fā)路由。具體地,可以按照與協(xié)議規(guī)定的指定路由器相同的行為,完成為所述用戶轉(zhuǎn)發(fā)組播流量的準備
實施例二
實施例一的故障恢復方法為DR設(shè)備故障時流量快速恢復提供了解決方案。本實施例則提出一種選舉子網(wǎng)中BDR的方法,可用于選擇實施例一子網(wǎng)中的BDR,如圖3所示,所述方法包括:
步驟210,PIM設(shè)備根據(jù)約定規(guī)則選舉所述子網(wǎng)中的BDR;
所述約定規(guī)則可以在相應的協(xié)議/標準中規(guī)定,本實施例中,該約定規(guī)則包括:選舉所述子網(wǎng)中除指定路由器DR之外的PIM設(shè)備中最優(yōu)的PIM設(shè)備,作為所述子網(wǎng)中的BDR(選舉DR的同時或之后選舉BDR)。
按照標準RFC4601中的規(guī)定,子網(wǎng)中的設(shè)備?;頟IM接口自己和此接口所有鄰居,發(fā)送的hello報文都攜帶了DR優(yōu)先級選項。此時,最優(yōu)的PIM設(shè)備可以是指優(yōu)先級最高的唯一一個PIM設(shè)備,或優(yōu)先級最高的多個PIM設(shè)備中IP地址最大或最小的PIM設(shè)備。如果所述PIM設(shè)備的接口接收和發(fā)送的至少一Hello報文不攜帶DR優(yōu)先級選項;則可以將IP地址最大或最小的PIM設(shè)備作為最優(yōu)的PIM設(shè)備。
應當說明的是,本發(fā)明并不局限于上述規(guī)則,可以從子網(wǎng)包括的多個PIM設(shè)備中選擇出唯一一個PIM設(shè)備的規(guī)則均可用于選舉BDR。
除特別指出外,文中提到的接口均指PIM設(shè)備在文中提到的子網(wǎng)中UP的接口。
步驟220,所述PIM設(shè)備保存所述子網(wǎng)中BDR的信息。
所述子網(wǎng)中的BDR在所述子網(wǎng)中的DR正常時,完成為用戶轉(zhuǎn)發(fā)組播流量的準備但不通過接口轉(zhuǎn)發(fā)組播流量,在所述子網(wǎng)中的DR故障時,立即為用戶轉(zhuǎn)發(fā)組播流量,并切換為所述子網(wǎng)中的DR。
考慮到子網(wǎng)中加入PIM設(shè)備時,根據(jù)約定規(guī)則選舉出來的BDR可能會發(fā)生改變,導致BDR的切換,這種切換會增加網(wǎng)絡(luò)負擔,對網(wǎng)絡(luò)的性能造成不利的影響。因此,本實施例子網(wǎng)新增的PIM設(shè)備通過其他PIM設(shè)備發(fā)送的Hello報文攜帶的BDR的信息來學習BDR。也即,一個PIM設(shè)備在等待選舉狀態(tài)(即還沒有選舉BDR)下,如通過接口接收到Hello報文且所述Hello 報文攜帶BDR的信息,則將所述BDR作為自己選舉的BDR。一種可選的方式是:PIM設(shè)備的接口在子網(wǎng)中UP之后即進入等待選舉狀態(tài),并啟動一等待選舉的定時器;在等待選舉狀態(tài)下,如通過所述接口接收到Hello報文且所述Hello報文攜帶BDR的信息,即進入選舉狀態(tài),停止所述定時器,將所述Hello報文攜帶的BDR作為自己選舉的BDR。
上述等待選舉的定時器的定時時間例如為鄰居的默認?;顣r間(詳見標準RFC46014.11章節(jié)Default_Hello_Holdtime描述),默認是105S。然而,本發(fā)明對此并不限定,也大于默認保活時間,或小于默認保活時間。
如果PIM設(shè)備在定時器定時時間內(nèi)沒有收到攜帶BDR的信息的Hello報文,例如該PIM設(shè)備是子網(wǎng)中首個啟動的PIM設(shè)備時,所述PIM設(shè)備在定時器超時后,即進入選舉狀態(tài),根據(jù)約定規(guī)則選舉所述子網(wǎng)中的BDR。
所述BDR的信息包括BDR的合法單播地址??梢酝ㄟ^在Hello報文中增加的BDR地址選項來攜帶BDR的信息,如果接收到的Hello報文中包含BDR地址選項且所述BDR地址選項的值為合法單播地址,則認為所述接收到的Hello報文攜帶BDR的信息。PIM設(shè)備在等待選舉狀態(tài)下還沒有選舉出BDR,通過所述接口發(fā)送攜帶BDR地址選項的Hello報文時,可以將所述BDR地址選項的值置為約定的無效值,如空值或0值。
所述PIM設(shè)備如通過所述接口接收到攜帶BDR地址選項的Hello報文且所述BDR地址選項的值為約定的無效值,就知道鄰居接口處于等待選舉狀態(tài),此時可以通過所述接口發(fā)送攜帶BDR地址選項的Hello報文,且所述BDR地址選項的值為保存的所述子網(wǎng)中BDR的合法單播地址。
為了正確解碼BDR地址選項,可以在BDR地址選項前增加類型和長度字段。一種示例性的Hello報文的BDR選項如圖5所示,包括:
類型(Type):本發(fā)明對此并不限定,可以為目前未定義Hello報文選項類型中的任意一種(36-65535);
長度(Length):為變長;
BDR地址(BDR Address):采用標準RFC46014.9.1規(guī)定的單播地址編 碼格式(Encoded-Unicast format)。
其中,單播地址編碼格式字段有:地址族(Addr Family)、封裝類型(Encoding Type)、單播地址(Unicast Address),詳細解釋可見標準RFC46014.9.1。此外,BDR地址的值為0的含義是,地址族字段填合法地址族,封裝類型字段可以為任意值,單播地址字段填0。
如果子網(wǎng)中除BDR之外的PIM設(shè)備檢測到所述子網(wǎng)的DR故障,此時將已選舉的所述子網(wǎng)中的BDR選舉為所述子網(wǎng)中的DR,并根據(jù)所述約定規(guī)則重新選舉所述子網(wǎng)中的BDR。
如果PIM設(shè)備檢測到所述子網(wǎng)中的BDR故障(如作為BDR的PIM設(shè)備故障或相關(guān)鏈路故障)時,保存的所述子網(wǎng)中BDR的信息仍為故障的BDR的信息,則根據(jù)約定規(guī)則重新選舉所述子網(wǎng)中的BDR,并更新保存的所述子網(wǎng)中BDR的信息。如果已學習到新的BDR,則不必重新選舉。
本實施例中,PIM設(shè)備保存子網(wǎng)中BDR的信息或更新保存的子網(wǎng)中BDR的信息之后,還包括:通過接口發(fā)送Hello報文,在所述Hello報文中攜帶保存的所述子網(wǎng)中BDR的信息。在重新選舉或其他的情況下,PIM設(shè)備如通過所述接口接收到Hello報文且所述Hello報文攜帶的BDR的信息不同于保存(均指本地保存)的所述子網(wǎng)中BDR的信息,可以按以下方式處理;
如本PIM設(shè)備非所述子網(wǎng)中的BDR(指保存的子網(wǎng)中的BDR),將所述Hello報文攜帶的BDR作為自己重新選舉的所述子網(wǎng)中的BDR,并更新保存的所述子網(wǎng)中BDR的信息;
如本PIM設(shè)備為所述子網(wǎng)中的BDR,根據(jù)所述約定規(guī)則重新選舉所述子網(wǎng)中的BDR,并更新保存的所述子網(wǎng)中BDR的信息。
相應地,本實施例提供的協(xié)議無關(guān)組播PIM設(shè)備如圖4所示,包括:
接口模塊50,用于接收和發(fā)送Hello報文。
選舉模塊60,用于根據(jù)約定規(guī)則選舉所述子網(wǎng)中的BDR。
存儲模塊70,用于保存所述子網(wǎng)中BDR的信息。
可選地,
所述選舉模塊根據(jù)的約定規(guī)則包括:選舉所述子網(wǎng)中除指定路由器DR之外最優(yōu)的PIM設(shè)備作為所述子網(wǎng)中的BDR。
可選地,
所述接口模塊接收和發(fā)送的Hello報文均攜帶DR優(yōu)先級選項;所述子網(wǎng)中除DR之外最優(yōu)的PIM設(shè)備是指所述子網(wǎng)中除DR之外的PIM設(shè)備中,優(yōu)先級最高的唯一一個PIM設(shè)備,或優(yōu)先級最高的多個PIM設(shè)備中IP地址最大或最小的PIM設(shè)備;或者
所述接口模塊接收或發(fā)送的至少一PIM設(shè)備不攜帶DR優(yōu)先級選項;所述子網(wǎng)中除指定路由器DR之外最優(yōu)的PIM設(shè)備是指所述子網(wǎng)中除DR之外的PIM設(shè)備中,IP地址最大或最小的PIM設(shè)備。
可選地,
所述選舉模塊根據(jù)約定規(guī)則選舉所述子網(wǎng)中的BDR,包括:
所述選舉模塊在等待選舉狀態(tài)下,如所述接口模塊接收到Hello報文且所述Hello報文攜帶BDR的信息,則將所述BDR作為自己選舉的BDR。
可選地,
所述選舉模塊在所述接口模塊在子網(wǎng)中UP之后即進入所述等待選舉狀態(tài),啟動一等待選舉的定時器,所述定時器的定時時間可以大于或等于鄰居的默認?;顣r間;
所述選舉模塊在等待選舉狀態(tài)下,如所述接口模塊接收到Hello報文且所述Hello報文攜帶BDR的信息,即進入選舉狀態(tài),停止所述定時器,將所述BDR作為自己選舉的BDR。
可選地,
所述選舉模塊根據(jù)約定規(guī)則選舉所述子網(wǎng)中的BDR,包括:
所述選舉模塊在所述定時器超時后,即進入選舉狀態(tài),根據(jù)約定規(guī)則選舉所述子網(wǎng)中的候選指定路由器BDR。
可選地,
所述BDR的信息包括BDR的合法單播地址;
所述接口模塊接收到的Hello報文攜帶BDR的信息,包括:接收到的Hello報文中包含BDR地址選項且所述BDR地址選項的值為合法單播地址。
可選地,
所述接口模塊發(fā)送Hello報文,包括:在等待選舉狀態(tài)下,發(fā)送攜帶BDR地址選項的Hello報文且所述BDR地址選項的值為約定的無效值。
可選地,
所述接口模塊還用于在進入選舉狀態(tài)之后,如接收到攜帶BDR地址選項的Hello報文且所述BDR地址選項的值為約定的無效值,則發(fā)送攜帶BDR地址選項的Hello報文且所述BDR地址選項的值為保存的所述子網(wǎng)中BDR的合法單播地址。
可選地,
所述PIM設(shè)備還包括:檢測模塊,用于檢測所述子網(wǎng)中的BDR故障;
所述選舉模塊還用于在進入選舉狀態(tài)之后,如所述檢測模塊檢測到所述子網(wǎng)中的BDR故障,且保存的所述子網(wǎng)中BDR的信息仍為故障的BDR的信息,則根據(jù)約定規(guī)則重新選舉所述子網(wǎng)中的BDR,并通知存儲模塊更新保存的所述子網(wǎng)中BDR的信息。
可選地,
所述選舉模塊還用于在進入選舉狀態(tài)之后,如所述接口模塊接收到Hello報文且所述Hello報文攜帶的BDR的信息不同于所述存儲模塊保存的所述子網(wǎng)中BDR的信息:
在本PIM設(shè)備非所述子網(wǎng)中的BDR時,將所述Hello報文攜帶的BDR作為自己重新選舉的所述子網(wǎng)中的BDR,并更新所述存儲模塊保存的所述子網(wǎng)中BDR的信息;
在本PIM設(shè)備為所述子網(wǎng)中的BDR時,根據(jù)所述約定規(guī)則重新選舉所述子網(wǎng)中的BDR,并更新所述存儲模塊保存的所述子網(wǎng)中BDR的信息。
可選地,
所述子網(wǎng)中的BDR在所述子網(wǎng)中的DR正常時,完成為用戶轉(zhuǎn)發(fā)組播流量的準備但不通過接口轉(zhuǎn)發(fā)組播流量,在所述子網(wǎng)中的DR故障時,立即為用戶轉(zhuǎn)發(fā)組播流量,并切換為所述子網(wǎng)中的DR。
可選地,
所述選舉模塊還用于在檢測到所述子網(wǎng)的DR故障且本PIM設(shè)備非所述子網(wǎng)中的BDR時,將已選舉的所述子網(wǎng)中的BDR選舉為所述子網(wǎng)中的DR,并根據(jù)所述約定規(guī)則重新選舉所述子網(wǎng)中的BDR。
可選地,
所述接口模塊還用于在保存所述子網(wǎng)中BDR的信息或更新保存的所述子網(wǎng)中BDR的信息之后,發(fā)送Hello報文,在所述Hello報文中攜帶所述存儲模塊保存的所述子網(wǎng)中BDR的信息。
可選地,
所述選舉模塊根據(jù)約定規(guī)則選舉所述子網(wǎng)中的BDR,包括:在所述接口模塊不支持在Hello報文中攜帶BDR地址選項和/或通過所述接口模塊接收到的Hello報文中不包括BDR地址選項時,所述選舉模塊在選舉所述子網(wǎng)中的DR的同時,根據(jù)約定規(guī)則選舉所述子網(wǎng)中的BDR。
在另一實施例中,如果PIM設(shè)備不支持在Hello報文中攜帶BDR地址選項和/或通過接口接收到的至少一Hello報文中不包括BDR地址選項,可以在選舉所述子網(wǎng)中的DR的同時,根據(jù)約定規(guī)則選舉所述子網(wǎng)中的BDR。選舉子網(wǎng)中DR的方法可以依照協(xié)議中的規(guī)定,也可以是其他方法。按照協(xié)議規(guī)定選舉DR時,如果子網(wǎng)中任意一臺PIM設(shè)備發(fā)送的Hello報文不攜帶BDR地址選項,則子網(wǎng)中的PIM設(shè)備應在新鄰居發(fā)現(xiàn)后立即按照約定規(guī)則選舉出子網(wǎng)中的DR和BDR。
下面再用一應用示例進行說明。
本應用示例的組播網(wǎng)絡(luò)拓撲如圖2所示,在三臺PIM設(shè)備R1~R3和IGMP 用戶H1相連的共享子網(wǎng)LAN1中,假定時序如下:
PIM設(shè)備R1接口1UP;
PIM設(shè)備R2接口2UP;
PIM設(shè)備R1等待選舉的定時器超時;
PIM設(shè)備R3接口3UP;
PIM設(shè)備R1接口1DOWN。
假定DR優(yōu)先級為:
PIM設(shè)備R3優(yōu)于PIM設(shè)備R1;
PIM設(shè)備R1優(yōu)于PIM設(shè)備R2。
此處先用事件的方式描述一下實施例二中PIM設(shè)備的處理流程:
事件E1:接口UP。這里指PIM設(shè)備的接口UP且存在合法IP地址。事件E1觸發(fā)后,PIM設(shè)備進入等待選舉狀態(tài)(也可稱為“等待狀態(tài)”),同時開啟一個等待狀態(tài)的定時器。
事件E2:接口接收到攜帶BDR地址選項且BDR地址為0的Hello報文。事件E2觸發(fā)后,保持原來的狀態(tài)(等待選舉狀態(tài)或選舉狀態(tài))。若接口處于選舉狀態(tài),將保存的BDR的地址通過Hello報文發(fā)送出去。
事件E3:接口接收到攜帶BDR地址選項且BDR地址為合法單播地址的Hello報文。在等待選舉狀態(tài)下,事件E3觸發(fā)后,進入選舉狀態(tài),將收到的Hello報文攜帶的BDR作為自己選舉的BDR,并保存Hello報文攜帶的BDR地址。在選舉狀態(tài)下,事件E3觸發(fā)后,如果本PIM設(shè)備非BDR,將收到的Hello報文攜帶的BDR作為自己重新選舉的BDR,將保存的BDR地址更新為收到的Hello報文攜帶的BDR地址;如果本PIM設(shè)備是BDR,則重新選舉子網(wǎng)中的BDR,如BDR變化還要更新保存的BDR地址。
事件E4:接口的等待狀態(tài)定時器超時。事件E4觸發(fā)后,接口進入選舉狀態(tài),按照約定規(guī)則進行BDR選舉。
事件E5:接口DOWN。這里指接口IP地址失效或接口DOWN。事件E5觸發(fā)后,接口進入初始化狀態(tài)。
其中,PIM設(shè)備于等待狀態(tài)下,發(fā)送的Hello報文是攜帶BDR地址選項且BDR地址為0的Hello報文。于選舉狀態(tài),發(fā)送的Hello報文是攜帶BDR地址選項且BDR地址為合法單播地址的Hello報文。在保存BDR地址或更新保存的BDR地址之后,均可發(fā)送攜帶BDR地址的Hello報文。
另外,子網(wǎng)中PIM設(shè)備選舉DR時,也可以采用通過Hello報文攜帶DR信息來學習DR的方式,此方式下,PIM設(shè)備也可以在接口UP后啟動一個等待選舉DR的定時器,此時等待選舉BDR的定時器和等待選舉DR的定時器可以是同一定時器,也可以不同。
以下是本應用示例的處理過程:
步驟7.1:PIM設(shè)備R1接口1UP,觸發(fā)事件E1,進入等待選舉狀態(tài),開啟一個等待狀態(tài)的定時器,同時發(fā)送Hello報文,該Hello報文攜帶BDR地址選項且BDR地址為0。這時不進行BDR選舉。
步驟7.2:PIM設(shè)備R2接口2UP,觸發(fā)事件E1,和步驟7.1中PIM設(shè)備R1接口1UP時的動作一樣。
步驟7.3:PIM設(shè)備R1接口1收到PIM設(shè)備R2接口2發(fā)送的Hello報文,發(fā)現(xiàn)BDR地址選項的地址為0且自己處于等待狀態(tài),觸發(fā)事件E2,正常建立PIM鄰居,保持等待狀態(tài)且不進行BDR選舉。
步驟7.4:PIM設(shè)備R1啟動的定時器超時,觸發(fā)事件E4,PIM設(shè)備R1進入選舉狀態(tài),選舉PIM設(shè)備R1為LAN1的DR,PIM設(shè)備R2為LAN1的BDR,然后發(fā)送一個攜帶PIM設(shè)備R2地址的Hello報文。
步驟7.5:PIM設(shè)備R2接口2收到PIM設(shè)備R1接口1發(fā)送的Hello報文,觸發(fā)事件E3,進入BDR選舉狀態(tài),用收到的Hello報文攜帶的BDR作為自己選舉的BDR并保存BDR地址(即本PIM設(shè)備地址),同時發(fā)送一個攜帶PIM設(shè)備R2地址的Hello報文。
步驟7.6:BDR選舉出來之后,作為BDR的PIM設(shè)備R2按照RFC4601協(xié)議中DR的處理方式處理IGMP或MLD用戶加入,把流量引到本設(shè)備并建立到用戶的轉(zhuǎn)發(fā)路由,但是接口2不向用戶轉(zhuǎn)發(fā)組播流量。
步驟7.7:PIM設(shè)備R3接口3UP,觸發(fā)事件E1,和步驟7.1中PIM設(shè)備R1接口1UP時的動作一樣。
步驟7.8:PIM設(shè)備R1接口1和PIM設(shè)備R2接口2收到PIM設(shè)備R3接口3的Hello報文,發(fā)現(xiàn)是新鄰居,都會立即發(fā)送攜帶PIM設(shè)備R2地址的Hello報文。
步驟7.9:PIM設(shè)備R3接口3收到PIM設(shè)備R1接口1或PIM設(shè)備R2接口2發(fā)送的Hello報文,觸發(fā)事件E3,動作和步驟7.5一樣。LAN1中的BDR仍然是PIM設(shè)備R2。
步驟7.10:PIM設(shè)備R1接口1DOWN,PIM設(shè)備R2接口2通過BFD等檢測手段快速感知,PIM設(shè)備R2接口2立即變?yōu)檗D(zhuǎn)發(fā)狀態(tài)轉(zhuǎn)發(fā)組播流量,同時在協(xié)議層面,作為BDR的PIM設(shè)備R2切換成LAN1的DR,并選舉PIM設(shè)備R3接口3為BDR。PIM設(shè)備R3同樣選舉PIM設(shè)備R2接口2為DR,自己變?yōu)锽DR。
在另一應用示例中,網(wǎng)絡(luò)設(shè)定及步驟7.1~7.9均與上述應用示例相同,此后發(fā)生BDR故障而不是DR故障,則流程如下:
步驟7.10:PIM設(shè)備R2接口2DOWN,觸發(fā)事件E5,按照PIM協(xié)議發(fā)送?;顣r間為0的Hello報文。
步驟7.12:PIM設(shè)備R1接口1和PIM設(shè)備R3接口3收到PIM設(shè)備R2接口2發(fā)送的Hello報文后,都會重新進行BDR選舉,將除DR之外最優(yōu)的設(shè)備(此時是PIM設(shè)備R3)選為BDR,并發(fā)送攜帶PIM設(shè)備R3地址的Hello報文。
上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實施例方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明實施例的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出 來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)(如ROM/RAM、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機,計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。
以上僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。