Pon系統(tǒng)中組播級(jí)聯(lián)的適配系統(tǒng)和方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及P0N(PassiveOpticalSystem,無(wú)源光網(wǎng)絡(luò))系統(tǒng)的組播級(jí)聯(lián)領(lǐng)域,具 體來(lái)講涉及P0N系統(tǒng)中組播級(jí)聯(lián)的適配系統(tǒng)和方法。
【背景技術(shù)】
[0002] IGMP(InternetGroupManagementProtocol,互聯(lián)網(wǎng)組管理協(xié)議)協(xié)議是TCP/ IP(TransferControlProtocol/InternetProtocol,傳輸控制協(xié)議 / 網(wǎng)際協(xié)議)協(xié)議族 中負(fù)責(zé)IP組播成員管理的協(xié)議,它用來(lái)在IP主機(jī)和與其直接相鄰的組播路由器之間建立、 維護(hù)組播組成員關(guān)系。P0N系統(tǒng)中主要實(shí)現(xiàn)IGMPSnooping、IGMPProxy等二層組播協(xié)議, 通過(guò)IGMPReport/Leave/Query消息來(lái)實(shí)現(xiàn)組播組成員的動(dòng)態(tài)加入、退出和維持。
[0003]IGMPSnooping的實(shí)現(xiàn)機(jī)理是:設(shè)備偵聽并攔截用戶主機(jī)向上級(jí)路由器的IGMP請(qǐng) 求,形成組播地址和設(shè)備接口的映射表。設(shè)備在收到組播數(shù)據(jù)包后,根據(jù)映射表向相應(yīng)的組 成員接口轉(zhuǎn)發(fā)數(shù)據(jù)包。
[0004]IGMPProxy與IGMPSnooping實(shí)現(xiàn)功能相同但機(jī)理相異:IGMPSnooping只是通 過(guò)偵聽I(yíng)GMP的消息來(lái)獲取有關(guān)信息,而IGMPProxy則攔截了用戶的IGMP請(qǐng)求并進(jìn)行相關(guān) 處理后,再將它轉(zhuǎn)發(fā)給上層路由器。
[0005] 隨著寬帶技術(shù)的發(fā)展,P0N接入設(shè)備覆蓋的用戶數(shù)目越來(lái)越多,單個(gè)板卡的芯片組 成結(jié)構(gòu)也越來(lái)越復(fù)雜,各種類型的芯片也在板卡內(nèi)部級(jí)聯(lián)起來(lái)。在此情況下,當(dāng)單板需要支 持組播功能時(shí),其上的多個(gè)芯片通常也需要同時(shí)支持組播。按照現(xiàn)有的實(shí)現(xiàn)方式,需要組播 協(xié)議模塊感知芯片的級(jí)聯(lián)方式,一般每個(gè)芯片都運(yùn)行一個(gè)組播協(xié)議模塊,每個(gè)芯片都可能 有其獨(dú)立的組播適配模塊,導(dǎo)致組播協(xié)議模塊和組播適配模塊都比較復(fù)雜而且無(wú)法通用。
[0006] 在現(xiàn)有技術(shù)下,同一廠家的以太網(wǎng)交換芯片一般可配置級(jí)聯(lián)端口,通過(guò)級(jí)聯(lián)端口 連接的多個(gè)芯片的所有端口的處理方式都完全相同,就象所有端口都處于同一個(gè)芯片上一 樣。例如部分廠家的以太網(wǎng)交換芯片提供的Hig端口級(jí)聯(lián)方式。但是如果芯片不支持級(jí) 聯(lián)模式、或者相應(yīng)的端口不支持配置為級(jí)聯(lián)模式、或者級(jí)聯(lián)的芯片是功能完全不同的芯片 (例如一個(gè)是P0N芯片,另一個(gè)是以太網(wǎng)交換芯片等)、或者級(jí)聯(lián)的芯片是不同廠家的芯片, 則均無(wú)法直接使用芯片提供的級(jí)聯(lián)功能。
【發(fā)明內(nèi)容】
[0007] 針對(duì)現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的在于提供一種P0N系統(tǒng)中組播級(jí)聯(lián)的 適配系統(tǒng)和方法,適應(yīng)多種以及多個(gè)芯片級(jí)聯(lián)時(shí)的場(chǎng)景,屏蔽芯片級(jí)聯(lián)信息以及各個(gè)芯片 級(jí)聯(lián)方式的差異,在邏輯上使組播協(xié)議模塊完全運(yùn)行在一個(gè)統(tǒng)一的芯片上。
[0008] 為達(dá)到以上目的,本發(fā)明采取一種P0N系統(tǒng)中組播級(jí)聯(lián)的適配系統(tǒng),其特征在于, 包括一個(gè)組播協(xié)議模塊、一個(gè)組播適配模塊和多個(gè)芯片驅(qū)動(dòng)模塊,所述組播協(xié)議模塊用于 按照組播協(xié)議要求處理組播協(xié)議報(bào)文;每個(gè)芯片驅(qū)動(dòng)模塊用于驅(qū)動(dòng)一個(gè)芯片;所述組播適 配模塊用于處理組播協(xié)議模塊和芯片驅(qū)動(dòng)模塊之間的適配,屏蔽組播協(xié)議模塊對(duì)于多個(gè)芯 片級(jí)聯(lián)的感知;所述組播適配模塊中存儲(chǔ)第一端口信息表,包括所有端口信息,用于在添加 /刪除表項(xiàng)適配處理時(shí)對(duì)端口的通用處理;所述組播協(xié)議模塊中存儲(chǔ)第二端口信息表,包 括去除第一端口信息表中所記錄的級(jí)聯(lián)端口后剩余的端口信息,用于組播協(xié)議模塊對(duì)組播 協(xié)議報(bào)文的源端口、目的端口以及端口組播表項(xiàng)的控制;所述適配系統(tǒng)還包括一個(gè)注冊(cè)接 口信息表,包括組播二層轉(zhuǎn)發(fā)表項(xiàng)注冊(cè)接口和組播協(xié)議報(bào)文收發(fā)注冊(cè)接口兩部分。
[0009] 在上述技術(shù)方案的基礎(chǔ)上,所述第一端口信息表中,每一條記錄項(xiàng)標(biāo)識(shí)一個(gè)端口 的信息,至少包括端口編號(hào)、端口上下行屬性、端口級(jí)聯(lián)屬性、關(guān)聯(lián)端口編號(hào),其中端口上下 行屬性表示端口是上行接口還是下行接口,端口級(jí)聯(lián)屬性表示端口是否為級(jí)聯(lián)端口;關(guān)聯(lián) 端口編號(hào)中,如果該端口為級(jí)聯(lián)端口,則關(guān)聯(lián)端口編號(hào)為該級(jí)聯(lián)端口所關(guān)聯(lián)的另一個(gè)芯片 的端口編號(hào),如果端口為非級(jí)聯(lián)端口,則關(guān)聯(lián)端口編號(hào)為空。
[0010] 在上述技術(shù)方案的基礎(chǔ)上,所示第二端口信息表中,每一條記錄項(xiàng)標(biāo)識(shí)一個(gè)端口 的信息,至少包括端口編號(hào)、端口上下行屬性,端口上下行屬性表示端口是上行接口還是下 行接口。
[0011] 在上述技術(shù)方案的基礎(chǔ)上,所述組播二層轉(zhuǎn)發(fā)表項(xiàng)注冊(cè)接口細(xì)分為添加組播表項(xiàng) 注冊(cè)接口、刪除組播表項(xiàng)注冊(cè)接口;組播協(xié)議報(bào)文收發(fā)注冊(cè)接口細(xì)分為報(bào)文發(fā)送注冊(cè)接口、 報(bào)文接收注冊(cè)接口;其中報(bào)文接收注冊(cè)接口由組播適配模塊向芯片驅(qū)動(dòng)模塊注冊(cè),其余注 冊(cè)接口均由組播適配模塊向組播協(xié)議模塊注冊(cè)。
[0012] 本發(fā)明還提供一種P0N系統(tǒng)中組播級(jí)聯(lián)適配方法,包括步驟:
[0013]S1.將芯片驅(qū)動(dòng)模塊、組播適配模塊、組播協(xié)議模塊依次初始化;
[0014]S2.組播適配模塊分別向組播協(xié)議模塊、多個(gè)芯片驅(qū)動(dòng)模塊注冊(cè)所述注冊(cè)接口信 息表中的接口;
[0015]S3.芯片驅(qū)動(dòng)模塊接收組播協(xié)議報(bào)文,處理并獲取組播協(xié)議報(bào)文的來(lái)源端口信息, 處理后的組播協(xié)議報(bào)文發(fā)送組播適配模塊;
[0016]S4.組播適配模塊接收組播協(xié)議報(bào)文,再次處理后發(fā)送給組播協(xié)議模塊;
[0017]S5.組播協(xié)議模塊接收并處理來(lái)自組播適配模塊的組播協(xié)議報(bào)文,根據(jù)組播協(xié)議 報(bào)文的類型,通過(guò)組播適配模塊向組播協(xié)議模塊注冊(cè)的接口,調(diào)用相應(yīng)的適配處理接口;包 括添加表項(xiàng)適配、刪除表項(xiàng)適配、報(bào)文發(fā)送適配;
[0018]S6.組播適配模塊調(diào)用芯片驅(qū)動(dòng)模塊的接口完成添加表項(xiàng)、刪除表項(xiàng)、報(bào)文發(fā)送的 功能;進(jìn)入下一個(gè)周期,轉(zhuǎn)入S3。
[0019] 在上述技術(shù)方案的基礎(chǔ)上,所述S5的詳細(xì)流程為:
[0020]S51.組播協(xié)議模塊解析接收到的組播協(xié)議報(bào)文類型,如果是成員報(bào)告報(bào)文,進(jìn)入S52;如果是離開報(bào)文,進(jìn)入S54;如果是查詢報(bào)文,進(jìn)入S53;
[0021]S52.組播協(xié)議模塊調(diào)用組播適配模塊,完成添加表項(xiàng)的適配處理,進(jìn)入S58;
[0022] S53.組播協(xié)議模塊根據(jù)報(bào)文的內(nèi)容,判斷是否為特定查詢,若是,進(jìn)入S54 ;若否, 進(jìn)入S57;
[0023]S54.組播協(xié)議模塊做特定查詢處理,進(jìn)入S55;
[0024]S55.組播協(xié)議模塊判斷有效時(shí)間內(nèi)是否收到源端口的成員報(bào)告報(bào)文,若是,結(jié)束; 若否,進(jìn)入S56;
[0025]S56.組播協(xié)議模塊調(diào)用組播適配模塊,做刪除表項(xiàng)適配處理,進(jìn)入S58;
[0026]S57.組播協(xié)議模塊做通用查詢處理,進(jìn)入S58;
[0027]S58.組播協(xié)議模塊調(diào)用組播適配模塊進(jìn)行報(bào)文發(fā)送的適配處理,結(jié)束。
[0028] 在上述技術(shù)方案的基礎(chǔ)上,組播協(xié)議模塊通過(guò)注冊(cè)接口傳遞至組播適配模塊參 數(shù),包括端口編號(hào)、組播組地址、VLAN值;S52中添加表項(xiàng)的適配處理具體為:
[0029]S521.組播適配模塊判斷該端口的上下行屬性是否為上行,若是,結(jié)束,若否,進(jìn)入 S522;
[0030]S522.調(diào)用對(duì)應(yīng)的芯片驅(qū)動(dòng)模塊接口,將對(duì)應(yīng)的端口編號(hào)、組播組地址、VLAN值添 加到組播二層轉(zhuǎn)發(fā)表中的表項(xiàng);
[0031]S523.由第一端口信息表獲取對(duì)應(yīng)芯片的上行端口,并獲取該上行端口的關(guān)聯(lián)端 P;
[0032]S524.判斷關(guān)聯(lián)端口是否為空,若否,進(jìn)入S525;若是,結(jié)束;
[0033]S525.調(diào)用對(duì)應(yīng)的芯片驅(qū)動(dòng)模塊的接口,將關(guān)聯(lián)端口的端口號(hào)、組播組地址、VLAN 值添加到組播二層轉(zhuǎn)發(fā)表中的表項(xiàng);
[0034]S526?關(guān)聯(lián)端口的引用計(jì)數(shù)增加1;
[0035]S527.將關(guān)聯(lián)端口賦值到S521中的端口后,轉(zhuǎn)入S521。
[0036] 在上述技術(shù)方案的基礎(chǔ)上,組播協(xié)議模塊通過(guò)注冊(cè)接口傳遞至組播適配模塊參 數(shù),包括端口編號(hào)、組播組地址、VLAN值;S56中刪除表項(xiàng)的適配處理具體為:
[0037]S561.判斷該端口的上下行屬性是否為上行,若是,結(jié)束,若否,進(jìn)入S562;
[0038]S562.調(diào)用對(duì)應(yīng)的芯片驅(qū)動(dòng)模塊的接口,將對(duì)應(yīng)的端口編號(hào)、組播組地址、VLAN值 的組播表項(xiàng)刪除;
[0039]S563.通過(guò)第一端口信息表獲取對(duì)應(yīng)芯片的上行端口,并獲取上行端口的關(guān)聯(lián)端 P;
[0040]S564.判斷關(guān)聯(lián)端口是否為空,若否,進(jìn)入S565;若是,結(jié)束;
[0041]S565.將關(guān)聯(lián)端口的引用計(jì)數(shù)減去1;
[0042]S566.判斷引用計(jì)數(shù)是否為0,若是,進(jìn)入S567;若否,進(jìn)入S568;
[0043]S567.調(diào)用關(guān)聯(lián)端口對(duì)應(yīng)的芯片驅(qū)動(dòng)模塊接口,將關(guān)聯(lián)端口的端口編號(hào)、組播組地 址、VLAN值的組播表刪除;
[0044]S568.將關(guān)聯(lián)端口的端口值賦值到S561中的端口后,轉(zhuǎn)入S561。
[0045] 本發(fā)明的有益效果在于:解決