AN中的X個(gè)VLAN的標(biāo)識(shí)、以及MAC1。其中,M為不小 于1的自然數(shù),X為不小于1且不大于M的自然數(shù)。
[0155] 在實(shí)際實(shí)施過(guò)程中,可以通過(guò)其它RB發(fā)來(lái)的LSP報(bào)文獲知該其它RB上減少了 M 個(gè)VLAN的AVF或者減少了 M個(gè)VLAN中的MACl的組播接收者。
[0156] 步驟S404,針對(duì)查找到的每一個(gè)組播轉(zhuǎn)發(fā)表項(xiàng)(為了描述方便,將該組播轉(zhuǎn)發(fā)表 項(xiàng)的索引稱為第一索引),判斷該組播轉(zhuǎn)發(fā)表項(xiàng)的轉(zhuǎn)發(fā)信息中除了包含所述X個(gè)VLAN的標(biāo) 識(shí)以外,是否還包含其它VLAN的標(biāo)識(shí),若否,則執(zhí)行步驟S406,若是,則執(zhí)行步驟S424 ;
[0157] 步驟S406,判斷第一索引的引用計(jì)數(shù)是否大于1,若等于1,則執(zhí)行步驟S408,否 貝1J,若大于1,則執(zhí)行步驟S416 ;
[0158] 其中,引用計(jì)數(shù)為索引關(guān)聯(lián)表中的索引被組播轉(zhuǎn)發(fā)表項(xiàng)引用的計(jì)數(shù)。
[0159] 步驟S408,在索引關(guān)聯(lián)表中查找到與第一索引對(duì)應(yīng)的RB組(稱為第一 RB組),從 第一 RB組中刪除該其它RB ;
[0160] 步驟S410,判斷索引關(guān)聯(lián)表中是否存在與更新后的第一 RB組相同的RB組,若不存 在與更新后的第一 RB組相同的RB組,則執(zhí)行步驟S412,若存在一 RB組(稱為第二RB組) 與更新后的第一 RB組相同,則執(zhí)行步驟S414 ;
[0161] 步驟S412,將所述更新后的第一 RB組對(duì)應(yīng)的出接口列表更新為到所述更新后的 第一 RB組中的每一個(gè)RB的出接口;
[0162] 步驟S414,將該組播轉(zhuǎn)發(fā)表項(xiàng)中的第一索引更新為第二RB組對(duì)應(yīng)的索引(稱為第 二索引),將第二索引的引用計(jì)數(shù)加1,從索引關(guān)聯(lián)表中刪除所述更新后的第一 RB組及其對(duì) 應(yīng)的第一索引和出接口列表;
[0163] 步驟S416,在索引關(guān)聯(lián)表中查找到與第一索引對(duì)應(yīng)的第一 RB組,創(chuàng)建一個(gè)由第一 RB組中除該其它RB以外的RB構(gòu)成的RB組(稱為第三RB組);
[0164] 此時(shí),第三RB組并沒有添加到索引關(guān)聯(lián)表中。
[0165] 步驟S418,判斷索引關(guān)聯(lián)表中是否存在與第三RB組相同的RB組,若不存在與第三 RB組相同的RB組,則執(zhí)行步驟S420,若存在一 RB組(稱為第四RB組)與第三RB組相同, 則執(zhí)行步驟S422 ;
[0166] 步驟S420,將第三RB組、第三索引與出接口列表的對(duì)應(yīng)關(guān)系添加到索引關(guān)聯(lián)表 中,將該組播轉(zhuǎn)發(fā)表項(xiàng)中的第一索引更新為第三索引,將第三索引的引用計(jì)數(shù)加1,將第一 索引的引用計(jì)數(shù)減1 ;
[0167] 其中,第三RB組對(duì)應(yīng)的出接口列表中包括:到第三RB組中的每一個(gè)RB的出接口; 第三索引是為第三RB組分配的一個(gè)未被占用的索引。
[0168] 步驟S422,將該組播轉(zhuǎn)發(fā)表項(xiàng)中的第一索引更新為第四RB組對(duì)應(yīng)的索引(稱為第 四索引),將第四索引的引用計(jì)數(shù)加1,將第一索引的引用計(jì)數(shù)減1 ;
[0169] 步驟S424,將該組播轉(zhuǎn)發(fā)表項(xiàng)拆分成N1+N2個(gè)組播轉(zhuǎn)發(fā)表項(xiàng),將第一索引的引用 計(jì)數(shù)加 Nl-I ;
[0170] 在步驟S424中,拆分得到的Nl個(gè)組播轉(zhuǎn)發(fā)表項(xiàng)的轉(zhuǎn)發(fā)信息中包含所述其它VLAN 中的至少一個(gè)VLAN的標(biāo)識(shí)、索引為第一索引,其余的N2個(gè)組播轉(zhuǎn)發(fā)表項(xiàng)的轉(zhuǎn)發(fā)信息中包含 X個(gè)VLAN中的至少一個(gè)VLAN的標(biāo)識(shí)。
[0171] 其中,Nl和N2為不小于1的自然數(shù)。
[0172] 步驟S426,在索引關(guān)聯(lián)表中查找到與第一索引對(duì)應(yīng)的第一 RB組,創(chuàng)建一個(gè)由第一 RB組中除該其它RB以外的RB構(gòu)成的RB組(稱為第三RB組);
[0173] 此時(shí),第三RB組并沒有添加到索引關(guān)聯(lián)表中。
[0174] 步驟S428,判斷索引關(guān)聯(lián)表中是否存在與第三RB組相同的RB組,若不存在與第三 RB組相同的RB組,則執(zhí)行步驟S430,若存在一 RB組(稱為第四RB組)與第三RB組相同, 則執(zhí)行步驟S432 ;
[0175] 步驟S430,將第三RB組、第三索引與出接口列表的對(duì)應(yīng)關(guān)系添加到索引關(guān)聯(lián)表 中,將N2個(gè)組播轉(zhuǎn)發(fā)表項(xiàng)中的索引設(shè)置為第三索引,將第三索引的引用計(jì)數(shù)加 N2 ;
[0176] 其中,第三RB組對(duì)應(yīng)的出接口列表中包括:到第三RB組中的每一個(gè)RB的出接口。 第三索引是為第三RB組分配的一個(gè)未被占用的索引。
[0177] 步驟S432,將N2個(gè)組播轉(zhuǎn)發(fā)表項(xiàng)中的索引設(shè)置為第四RB組對(duì)應(yīng)的索引(稱為第 四索引),將第四索引的引用計(jì)數(shù)加 N2。
[0178] 其中,在如圖5和圖6所示的方法中,當(dāng)組播轉(zhuǎn)發(fā)表項(xiàng)發(fā)生了變化和/或索引關(guān)聯(lián) 表發(fā)生了變化時(shí),均需要更新轉(zhuǎn)發(fā)層面中的對(duì)應(yīng)內(nèi)容。
[0179] 由圖5和圖6所示的方法可見,當(dāng)其它RB上增加(或減少)了至少一個(gè)VLAN的 AVF或者該至少一個(gè)VLAN的同一組播MAC地址的組播接收者時(shí),只需針對(duì)轉(zhuǎn)發(fā)信息滿足以 下條件的組播轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行相應(yīng)處理:當(dāng)增加(或減少)了至少一個(gè)VLAN的AVF時(shí),轉(zhuǎn)發(fā) 信息中包含有該至少一個(gè)VLAN中的部分或全部VLAN的標(biāo)識(shí),當(dāng)增加(或減少)了至少一個(gè) VLAN的同一組播MC地址的組播接收者時(shí),轉(zhuǎn)發(fā)信息中包含有該至少一個(gè)VLAN中的部分或 全部VLAN的標(biāo)識(shí)、以及該組播MAC地址,由于滿足條件的組播轉(zhuǎn)發(fā)表項(xiàng)數(shù)量較少,因此,大 大縮短了組播轉(zhuǎn)發(fā)表項(xiàng)的更新時(shí)間,加快了組播數(shù)據(jù)流的收斂速度。
[0180] 下面以圖7所示的實(shí)際組網(wǎng)為例,來(lái)說(shuō)明上述實(shí)施例的方法。在圖7中,RB 101為唯 一的組播樹根,RBlOl通過(guò)接口 Pl與RB201連接;RBlOl通過(guò)接口 P2與RB202連接;RBlOl 通過(guò)接口 P3與RB203連接。RB201~RB203是多個(gè)VLAN的AVF,假定VLAN總數(shù)為4094個(gè)。 以RB+VLAN類型的組播轉(zhuǎn)發(fā)表項(xiàng)為例。
[0181] (1)網(wǎng)絡(luò)拓?fù)渥兓?br>[0182] 初始時(shí)的網(wǎng)絡(luò)拓?fù)淙鐖D7所示,此時(shí),RB201~RB203是VLANl~VLAN4000的AVF, 此時(shí)的組播轉(zhuǎn)發(fā)表項(xiàng)如表1所示,索引關(guān)聯(lián)表如表2所示:
[0183] 表 1
[0184]
[0185]表 2
[0187] 如圖8所示,當(dāng)RBlOl感知到RBlOl與RB203之間的鏈路故障(即網(wǎng)絡(luò)拓?fù)浒l(fā)生 了變化)時(shí),根據(jù)如圖8所示的變化后的網(wǎng)絡(luò)拓?fù)渲匦掠?jì)算組播分發(fā)樹,針對(duì)如表2所示的 索引關(guān)聯(lián)表中的每一個(gè)RB組,此時(shí),只有一個(gè)由RB201、RB202和RB203構(gòu)成的RB組1,將該 RB組1對(duì)應(yīng)的出接口列表更新為RBlOl到該RB組1中的每一個(gè)RB的出接口,由于RBlOl 到RB201的出接口為P1,RB101到RB202的出接口為P2,RB101到RB203的出接口為P1,因 此,RBl對(duì)應(yīng)的出接口列表更新為Pl和P2。此時(shí)的索引關(guān)聯(lián)表更新為如表3所示,而如表 1所示的組播轉(zhuǎn)發(fā)表項(xiàng)無(wú)需更新。
[0188] 表 3
[0190] (2) AVF 變化
[0191] 以如圖7所示的網(wǎng)絡(luò)進(jìn)行說(shuō)明。初始時(shí),RB201~RB203是VLANl~VLAN4000的 AVF,此時(shí)的組播轉(zhuǎn)發(fā)表項(xiàng)如表1所示,索引關(guān)聯(lián)表如表2所示,索引1的引用計(jì)數(shù)為1。
[0192] 當(dāng)RBlOl接收到用于指示RB203上減少了 VLANl~VLAN2000的AVF的LSP報(bào)文 之后,查找到如表1所示的組播轉(zhuǎn)發(fā)表項(xiàng)的轉(zhuǎn)發(fā)信息中包含有VLANl~VLAN2000,并且,該 轉(zhuǎn)發(fā)信息中除了包含VLANl~VLAN2000以外還包含VLAN2001~VLAN4000,則將如表1所 示的組播轉(zhuǎn)發(fā)表項(xiàng)拆分成了如表4所示的2個(gè)組播轉(zhuǎn)發(fā)表項(xiàng),此時(shí),如表4第2行所示的組 播轉(zhuǎn)發(fā)表項(xiàng)中的索引待定。
[0193] 表 4
[0194]
[0195] 根據(jù)索引1在如表2所示的索引關(guān)聯(lián)表中查找到對(duì)應(yīng)的RB組1,創(chuàng)建一個(gè)由RB組 1中除RB203以外的RB構(gòu)成的RB組2 :RB201和RB202 ;判斷如表2所示的索引關(guān)聯(lián)表中是 否存在與RB組2相同的RB組,結(jié)果是不存在,則將RB組2、索引2與出接口列表的對(duì)應(yīng)關(guān) 系添加到如表2所示的索引關(guān)聯(lián)表中,將如表4第2行所示的組播轉(zhuǎn)發(fā)表項(xiàng)中的索引設(shè)置 為索引2,將索引2的引用計(jì)數(shù)置為1。此時(shí)的索引關(guān)聯(lián)表如表5所示,組播轉(zhuǎn)發(fā)表項(xiàng)如表 6所示:
[0196] 表 5
[0198]表 6
[0200] 后續(xù),當(dāng)RBlOl接收到用于指示RB203上增加了 VLANl~VLAN1000的AVF的LSP報(bào) 文之后,查找到如表6第2行所示的組播轉(zhuǎn)發(fā)表項(xiàng)的轉(zhuǎn)發(fā)信息中包含有VLANl~VLAN1000, 并且,該轉(zhuǎn)發(fā)信息中除了包含VLANl~VLAN1000以外還包含VLAN1001~VLAN2000,則將 如表6第2行所示的組播轉(zhuǎn)發(fā)表項(xiàng)拆分成了如表7第2行和第3行所示的2個(gè)組播轉(zhuǎn)發(fā)表 項(xiàng),此時(shí),如表7第2行所示的組播轉(zhuǎn)發(fā)表項(xiàng)中的索引待定。
[0201] 表 7
[0202]
[0203] 根據(jù)索引2在如表5所示的索引關(guān)聯(lián)表中查找到對(duì)應(yīng)的RB組2 :RB201和RB202, 創(chuàng)建一個(gè)由RB20URB202和RB203組成的RB組3 ;判斷如表5所示的索引關(guān)聯(lián)表中是否存 在相同的RB組,判斷結(jié)果是存在RB組1與RB組3相同,則將如表7第2行所示的組播轉(zhuǎn) 發(fā)表項(xiàng)的索引設(shè)置為索引1,此時(shí),如表7的組播轉(zhuǎn)發(fā)表項(xiàng)更新為如表8所示,將索引1的引 用計(jì)數(shù)置為2。
[0204] 表 8
[0206] 以上只是以VLAN標(biāo)識(shí)采用分段形式的組播轉(zhuǎn)發(fā)表項(xiàng)為例進(jìn)行的說(shuō)明,顯然,當(dāng) VLAN標(biāo)識(shí)采用列表形式或者bitmap形式時(shí),也可以采用類似的方法,本申請(qǐng)實(shí)施例對(duì)此不 做限定。
[0207] 針對(duì)上述實(shí)施例中的方法,本申請(qǐng)實(shí)施例中提供了一種TRILL網(wǎng)絡(luò)中的報(bào)文轉(zhuǎn)發(fā) 裝置,該裝置應(yīng)用于RB中,RB具有組播轉(zhuǎn)發(fā)表項(xiàng)和索引關(guān)聯(lián)表,組播轉(zhuǎn)發(fā)表項(xiàng)中包括轉(zhuǎn)發(fā) 信息與索引的對(duì)應(yīng)關(guān)系,轉(zhuǎn)發(fā)信息中包含樹根RB的標(biāo)識(shí)和至少兩個(gè)VLAN的標(biāo)識(shí),索引關(guān)聯(lián) 表中包括索引、RB組與出接口列表的對(duì)應(yīng)關(guān)系,索引關(guān)聯(lián)表中與組播轉(zhuǎn)發(fā)表項(xiàng)的索引相對(duì) 應(yīng)的RB組中的RB滿足以下條件:該RB是至少兩個(gè)VLAN的AVF。
[0208] 如圖9所示,該裝置中包括以下模塊:接收模塊501、查找模塊502和發(fā)送模塊 503,其中:
[0209] 接收模塊501,用于接收多目的報(bào)文;
[0210] 查找模塊502,用于在接收模501塊接收到多目的報(bào)文之后,查找轉(zhuǎn)發(fā)信息包含該 多目的報(bào)文中攜帶的報(bào)文信息的組播轉(zhuǎn)發(fā)表項(xiàng),其中,該報(bào)文信息包括:樹根RB的標(biāo)識(shí)和 該多目的報(bào)文的內(nèi)層的VLAN標(biāo)識(shí);還用于根據(jù)查找到的組播轉(zhuǎn)發(fā)表項(xiàng)中的索引查找索引 關(guān)聯(lián)表,以獲取該多目的報(bào)文的出接口列表;
[0211] 發(fā)送模塊503,用于根據(jù)查找模塊502獲取到的該多目的報(bào)文的出接口列表,轉(zhuǎn)發(fā) 該多目的報(bào)文。
[0212] 其中,組播轉(zhuǎn)發(fā)表項(xiàng)的轉(zhuǎn)發(fā)信息中還包含組播MAC地址,則索引關(guān)聯(lián)表中與該組 播轉(zhuǎn)發(fā)表項(xiàng)的索引相對(duì)應(yīng)的RB組中的RB滿足的條件具體為:該RB是該至少兩個(gè)VLAN中 的該組播MAC地址的組播接收者;報(bào)文信息還包括該多目的報(bào)文的內(nèi)層的目的組播MAC地 址。
[0213] 如圖10所示,在本申請(qǐng)的一種實(shí)施例中,該裝置中還包括:計(jì)算模塊504和索引關(guān) 聯(lián)表更新模塊505,其中:
[0214] 計(jì)算模塊504,用于當(dāng)TRILL網(wǎng)絡(luò)的拓?fù)渥兓瘯r(shí),根據(jù)變化后的拓?fù)渲匦掠?jì)算用于 指導(dǎo)多目的報(bào)文轉(zhuǎn)發(fā)的組播分發(fā)樹,針對(duì)索引關(guān)聯(lián)表中的每一個(gè)RB組,基于重新計(jì)算出的 組播分發(fā)樹,計(jì)算到該RB組中的每一個(gè)RB的出接口;
[0215] 索引關(guān)聯(lián)表更新模塊505,用于在計(jì)算模塊504計(jì)算出到RB組中的每一個(gè)RB的出 接口之后,將該RB組對(duì)應(yīng)的出接口列表更新為計(jì)算出的出接口。
[0216] 如圖11所示,另一種實(shí)施例中,該裝置中還包括:判斷模塊506、索引關(guān)聯(lián)表更新 模塊507、組播轉(zhuǎn)發(fā)表項(xiàng)更新模塊508和引用計(jì)數(shù)更新模塊509,其中:
[0217] 查找模塊502,還用于當(dāng)其它RB上的AVF或者組播接收者發(fā)生了變化時(shí),查找轉(zhuǎn) 發(fā)信息滿足以下條件的組播轉(zhuǎn)發(fā)表項(xiàng);其中,當(dāng)該其它RB上增加或減少了 M個(gè)VLAN的AVF 時(shí),該條件包括:轉(zhuǎn)發(fā)信息中包含有M個(gè)VLAN中的X個(gè)VLAN的標(biāo)識(shí),當(dāng)該其它RB上增加或 減少了 M個(gè)VLAN中的同一組播MAC地址的組播接收者時(shí),該條件包括:轉(zhuǎn)發(fā)信息中包含有 M個(gè)VLAN中的X個(gè)VLAN的標(biāo)識(shí)、以及該組播MAC地址,M為不小于1的自然數(shù),X為不小于 1且不大于M的自然數(shù);
[0218] 判斷模塊506,用于針對(duì)查找模塊502查找到的每一個(gè)組播轉(zhuǎn)發(fā)表項(xiàng),在該組播轉(zhuǎn) 發(fā)表項(xiàng)的轉(zhuǎn)發(fā)信息中僅包含X個(gè)VLAN的標(biāo)識(shí)時(shí),判斷該組播轉(zhuǎn)發(fā)表項(xiàng)中第一索引的引用計(jì) 數(shù)是否大于1,其中,引用計(jì)數(shù)為索引關(guān)聯(lián)表中的索引被組播轉(zhuǎn)發(fā)表項(xiàng)引用的計(jì)數(shù);還用于 判斷索引關(guān)聯(lián)表中是否存在與經(jīng)過(guò)索引關(guān)聯(lián)表更新模塊507更新后的第一 RB組相同