張博君 梁文博 漆先虎
(西安電子工程研究所 西安 710100)
隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,點(diǎn)到多點(diǎn)、多點(diǎn)到多點(diǎn)的數(shù)據(jù)傳輸形式已經(jīng)越來(lái)越多的應(yīng)用于工程實(shí)踐中。采用傳統(tǒng)的網(wǎng)絡(luò)單播方式來(lái)完成點(diǎn)到多點(diǎn)、多點(diǎn)到多點(diǎn)的數(shù)據(jù)傳輸,不僅增加了網(wǎng)絡(luò)負(fù)荷,而且極大的消耗了網(wǎng)絡(luò)帶寬,明顯已經(jīng)不能滿(mǎn)足數(shù)據(jù)傳輸?shù)男枨罅恕4藭r(shí),互聯(lián)網(wǎng)組管理協(xié)議應(yīng)運(yùn)而生,能較好的解決上述問(wèn)題。但互聯(lián)網(wǎng)組管理協(xié)議并不是完美的,它是一個(gè)三層(網(wǎng)絡(luò)層)協(xié)議,可以減少三層設(shè)備(路由器)上不必要的網(wǎng)絡(luò)流量,但并不能減少二層(數(shù)據(jù)鏈路層)設(shè)備(交換機(jī))上不必要的網(wǎng)絡(luò)流量。IGMP Snooping技術(shù)則是為了減少二層組播過(guò)程中不必要網(wǎng)絡(luò)流量提出的一種運(yùn)行在二層設(shè)備上的優(yōu)化協(xié)議。
以太網(wǎng)總線雷達(dá)系統(tǒng)中的某些數(shù)據(jù),例如:雷達(dá)跟蹤目標(biāo)時(shí)的電視或紅外數(shù)字視頻流、目標(biāo)航跡、點(diǎn)跡、雜波圖、火控信息、故障信息等,要求同時(shí)發(fā)送給多個(gè)分系統(tǒng),屬于點(diǎn)到多點(diǎn)的數(shù)據(jù)傳輸方式,各分系統(tǒng)通過(guò)這些數(shù)據(jù)實(shí)現(xiàn)雷達(dá)的工作狀態(tài)監(jiān)控及控制。采用傳統(tǒng)的網(wǎng)絡(luò)單播方式明顯已經(jīng)不能滿(mǎn)足系統(tǒng)數(shù)據(jù)傳輸?shù)囊?,此時(shí)只有采用組播方式才能夠較好解決該問(wèn)題。出于網(wǎng)絡(luò)最小化和工程成本的考慮,以太網(wǎng)總線雷達(dá)系統(tǒng)一般采用軍工級(jí)的交換機(jī)來(lái)構(gòu)建總線系統(tǒng)。而交換機(jī)屬于二層設(shè)備,那么如何減少二層設(shè)備中不必要的組播流量,來(lái)減輕網(wǎng)絡(luò)負(fù)荷,優(yōu)化網(wǎng)絡(luò),就成為以太網(wǎng)總線雷達(dá)系統(tǒng)需要解決的問(wèn)題。支持IGMP Snooping技術(shù)的交換機(jī)能很好的管理二層組播數(shù)據(jù)傳輸。能夠很好的解決上述問(wèn)題。
IGMP協(xié)議是一個(gè)三層(網(wǎng)絡(luò)層)協(xié)議,而交換機(jī)屬于二層設(shè)備,如果我們采用交換機(jī)來(lái)搭建一個(gè)雷達(dá)總線系統(tǒng),那么就必須有一個(gè)運(yùn)行在二層設(shè)備上的組播約束機(jī)制,來(lái)對(duì)組播組進(jìn)行管理。
IGMP Snooping作為二層組播協(xié)議,就是為了避免交換機(jī)冗余轉(zhuǎn)發(fā)組播數(shù)據(jù)導(dǎo)致帶寬損失而產(chǎn)生的。它是運(yùn)行在二層(數(shù)據(jù)鏈路層)設(shè)備上的組播約束機(jī)制,用于管理和控制組播組。
它的基本思想是,通過(guò)偵聽(tīng)I(yíng)GMP成員報(bào)告報(bào)文和離開(kāi)報(bào)文來(lái)維護(hù)二層組播表。管理交換機(jī)各端口的組播組成員,從而確定數(shù)據(jù)轉(zhuǎn)發(fā)的成員對(duì)象。
在沒(méi)有IGMP Snooping功能的交換機(jī)中,收到組播報(bào)文的端口將向其他所有端口轉(zhuǎn)發(fā)組播報(bào)文。如圖1所示,主機(jī)A、B是組播報(bào)文發(fā)送機(jī)與交換機(jī)1連接,主機(jī) C、D、E、F、G 與交換機(jī)2連接,其中主機(jī)C、D是與主機(jī)A處于同一組播組的組播報(bào)文接收機(jī)。主機(jī)E、F、G是與主機(jī)B處于同一組播組的組播報(bào)文接收機(jī)。當(dāng)主機(jī)A發(fā)送組播報(bào)文時(shí),不具備IGMP Snooping功能的交換機(jī)1將轉(zhuǎn)發(fā)組播報(bào)文到主機(jī)B和交換機(jī)2。如果交換機(jī)2也不具備IGMP Snooping功能,此時(shí)它將向它的所有端口洪泛組播報(bào)文,即向主機(jī)C、D、E、F、G都發(fā)送組播報(bào)文,而主機(jī)B、E、F、G是不需要該組播報(bào)文的。同樣當(dāng)主機(jī)B發(fā)送組播報(bào)文時(shí),交換機(jī)1將轉(zhuǎn)發(fā)組播報(bào)文到主機(jī)A和交換機(jī)2。交換機(jī)2也將向C、D、E、F、G都發(fā)送組播報(bào)文,而主機(jī)A、C、D是不需要該組播報(bào)文的。這樣就會(huì)造成不必要的網(wǎng)絡(luò)流量,增加了網(wǎng)絡(luò)負(fù)擔(dān),如果網(wǎng)絡(luò)規(guī)模和數(shù)據(jù)量很大的話,這種無(wú)關(guān)的組播流量會(huì)對(duì)網(wǎng)絡(luò)性能造成很?chē)?yán)重的影響。
圖1 無(wú)IGMP Snooping功能的組播數(shù)據(jù)傳輸示意圖
如果交換機(jī)實(shí)現(xiàn)了IGMP Snooping功能,那么交換機(jī)在轉(zhuǎn)發(fā)組播報(bào)文時(shí),將僅向注冊(cè)有組播報(bào)文接收機(jī)的那些端口轉(zhuǎn)發(fā)組播報(bào)文。如圖2所示,圖中實(shí)線表示一組組播數(shù)據(jù)傳輸,虛線表示一組組播數(shù)據(jù)傳輸,可以看出如果交換機(jī)具備了IGMP Snooping功能,那么主機(jī)A的數(shù)據(jù)只會(huì)發(fā)給與它同一組播組的主機(jī)C、D。主機(jī)B的數(shù)據(jù)只會(huì)發(fā)給與它同一組播組的主機(jī)E、F、G。這樣會(huì)大大減少網(wǎng)絡(luò)中不必要的網(wǎng)絡(luò)流量,很好的優(yōu)化網(wǎng)絡(luò)性能。
IGMP Snooping主要有兩個(gè)任務(wù),一個(gè)是通過(guò)對(duì)IGMP報(bào)文的監(jiān)聽(tīng)及二層組播表維護(hù)來(lái)減少不必要的組播數(shù)據(jù)流量。另一個(gè)是根據(jù)組播表中的組播成員信息轉(zhuǎn)發(fā)組播報(bào)文。
IGMP協(xié)議報(bào)文有三種類(lèi)型:IGMP查詢(xún)報(bào)文、IGMP成員報(bào)告報(bào)文以及IGMP離開(kāi)報(bào)文。IGMP Snooping通過(guò)監(jiān)聽(tīng)I(yíng)GMP成員報(bào)告報(bào)文和IGMP離開(kāi)報(bào)文,來(lái)維護(hù)二層組播表。圖2中交換機(jī)1的組播表如表1所示。圖2中交換機(jī)2的組播表如表2所示。
圖2 有IGMP Snooping功能的組播數(shù)據(jù)傳輸示意圖
表1 交換機(jī)1二層組播表
表2 交換機(jī)2二層組播表
表1和表2中的第一列(組播組成員主機(jī))在實(shí)際組播表中是沒(méi)有的,這里是為了方便大家理解,實(shí)際的組播表只包括組播MAC地址、組播IP地址、端口掩碼這三項(xiàng)。有些組播表還有端口生存時(shí)間這一項(xiàng),它的作用是表示端口生存時(shí)間,當(dāng)定時(shí)器計(jì)時(shí)到一定時(shí)間后,端口生存時(shí)間減為0,則自動(dòng)從組播組中刪除該端口。由于大部分的應(yīng)用都是當(dāng)發(fā)送離開(kāi)報(bào)文時(shí),組播組成員才離開(kāi)組,所以這里我們對(duì)端口生存時(shí)間不做討論。
表1和2中主機(jī)A、C、D為同一組播組,主機(jī)B、E、F、G為同一組播組,組播MAC地址為組播組對(duì)應(yīng)的MAC地址,組播IP地址為組播組對(duì)應(yīng)的IP地址。端口掩碼為16位二進(jìn)制數(shù),每一位二進(jìn)制位表示交換機(jī)的一個(gè)端口,若為“1”表示該端口連接的是組播組成員,“0”則不是。
圖2中主機(jī) A、C、D屬于組播 IP地址為255.0.0.1的組播組,對(duì)應(yīng)的MAC地址為01:00:2C:01:21:30。主機(jī)B、E、F、G屬于組播 IP地址為255.0.0.2的組播組,對(duì)應(yīng)的MAC地址為01:00:2C:01:21:31。結(jié)合表1中的端口掩碼和圖2可以看出主機(jī)A連接在交換機(jī)1的0端口,主機(jī)B連接在交換機(jī)1的1端口。結(jié)合表2中的端口掩碼和圖2可以看出主機(jī)C、D分別連接在交換機(jī)2的2、3端口,主機(jī)E、F、G 分別連接在交換機(jī) 2的 4、5、6端口。表1和2中端口掩碼的第15位都為“1”,表示交換機(jī)1與交換機(jī)2是通過(guò)15端口相連接的。那么IGMP Snooping的工作過(guò)程如下,以主機(jī)A、C、D這一組播組為例:
a.交換機(jī)1定時(shí)向整個(gè)網(wǎng)絡(luò)發(fā)送IGMP查詢(xún)報(bào)文。發(fā)送給主機(jī)C、D的查詢(xún)報(bào)文由交換機(jī)1發(fā)給交換機(jī)2,然后由交換機(jī)2轉(zhuǎn)發(fā)。
b.當(dāng)主機(jī)A接收到此報(bào)文后,會(huì)以IGMP查詢(xún)報(bào)文對(duì)應(yīng)以太幀中的源MAC地址為目的MAC地址,以主機(jī)A所在組播組的MAC地址01:00:2C:01:21:30為源MAC地址,發(fā)送IGMP報(bào)告報(bào)文,通知交換機(jī)1端口0存在一個(gè)組播組成員,交換機(jī)1從端口0接收到IGMP成員報(bào)告報(bào)文后,從對(duì)應(yīng)的以太幀中獲取目的MAC地址,即01:00:2C:01:21:30。此地址即為該組播組的MAC地址。對(duì)于主機(jī)C、D,交換機(jī)1將查詢(xún)報(bào)文發(fā)送給交換機(jī)2,交換機(jī)2轉(zhuǎn)發(fā)給主機(jī)C、D,主機(jī)C、D同樣以IGMP查詢(xún)報(bào)文對(duì)應(yīng)以太幀中的源MAC地址為目的MAC地址,以主機(jī)C、D所在組播組的MAC地址01:00:2C:01:21:30為源MAC地址返回報(bào)告報(bào)文給交換機(jī)2,交換機(jī)2再轉(zhuǎn)發(fā)給交換機(jī)1。
c.交換機(jī)1查找組播表,若表中有對(duì)應(yīng)的組播MAC地址,則將端口掩碼對(duì)應(yīng)位置置為“1”。本例如表1所示,交換機(jī)1端口0連接的是主機(jī)A,端口15連接的是交換機(jī)2,由于交換機(jī)2轉(zhuǎn)發(fā)主機(jī)C、D的報(bào)告報(bào)文,所以交換機(jī)1認(rèn)為與交換機(jī)2相連的端口15也是組播組成員,故將端口掩碼置為1000 0000 0000 0001,即端口0和15都是該組播組成員。
對(duì)于交換機(jī)2,它也會(huì)定時(shí)向整個(gè)網(wǎng)絡(luò)發(fā)送IGMP查詢(xún)報(bào)文,收到交換機(jī)1和主機(jī)C、D的IGMP報(bào)告報(bào)文后,它也會(huì)建立一個(gè)如表2所示的組播表。由于交換機(jī)1轉(zhuǎn)發(fā)主機(jī)A的報(bào)告報(bào)文,所以交換機(jī)2認(rèn)為與交換機(jī)1相連的端口15也是組播組成員。該組播MAC地址和組播IP地址與表1中主機(jī)A所在組相同,表示主機(jī)A、C、D在同一組播組。將端口掩碼置為1000 0000 0000 1100,表示交換機(jī)2 的2、3、15 端口相連的主機(jī)C、D和交換機(jī)1都是該組播組的成員。
d.若主機(jī)C、D被設(shè)置為不再接收組播組255.0.0.1的組播報(bào)文,則主機(jī)C、D會(huì)立即發(fā)送一個(gè)IGMP離開(kāi)報(bào)文到IGMP查詢(xún)者,即交換機(jī)1和2。對(duì)于交換機(jī)1來(lái)說(shuō),主機(jī)C、D的離開(kāi)報(bào)文由交換機(jī)2轉(zhuǎn)發(fā),那么交換機(jī)1認(rèn)為與交換機(jī)2連接的端口15不再是該組播組的成員,收到離開(kāi)報(bào)文后它會(huì)刪除交換機(jī)1組播表中的對(duì)應(yīng)項(xiàng),即將端口15從表中該組刪除,即將端口掩碼對(duì)應(yīng)項(xiàng)置為0。對(duì)于交換機(jī)2來(lái)說(shuō),它也會(huì)將端口2、3(即主機(jī)C、D),從交換機(jī)2組播表中的對(duì)應(yīng)項(xiàng)中刪除,這樣主機(jī)C、D將不再是該組播組的成員,不再接收該組播組的數(shù)據(jù)。
e.組播報(bào)文的轉(zhuǎn)發(fā)過(guò)程是這樣的,當(dāng)交換機(jī)1收到主機(jī)A發(fā)送的組播報(bào)文時(shí),它會(huì)取出組播報(bào)文的目的MAC地址,即01:00:2C:01:21:30,也就是組播MAC地址。然后在組播表中查找該MAC地址對(duì)應(yīng)的表項(xiàng),若找到對(duì)應(yīng)項(xiàng),則根據(jù)端口掩碼直接向該組成員轉(zhuǎn)發(fā)組播報(bào)文。若沒(méi)找到對(duì)應(yīng)表項(xiàng)則丟棄該組播報(bào)文。
以上就是IGMP Snooping的工作過(guò)程,對(duì)于主機(jī)B、E、F、G這一組組播組,工作過(guò)程與主機(jī)A、C、D這一組組播組是相同的。如果組播報(bào)文的發(fā)送方不是主機(jī) A、B,而是主機(jī) C、D、E、F、G 中的任意一臺(tái)或者幾臺(tái),它的工作過(guò)程和以上介紹的是相同的。
以太網(wǎng)總線雷達(dá)系統(tǒng)網(wǎng)絡(luò)基本框圖如圖3所示。以太網(wǎng)總線雷達(dá)系統(tǒng)一般具有兩臺(tái)交換機(jī),圖3中的交換機(jī)1一般安裝在雷達(dá)箱體內(nèi),交換機(jī)2一般安裝在雷達(dá)操控方艙中。兩臺(tái)交換機(jī)通過(guò)雷達(dá)匯流環(huán)中轉(zhuǎn)數(shù)據(jù)。
圖3 以太網(wǎng)總線雷達(dá)系統(tǒng)網(wǎng)絡(luò)基本框圖
在雷達(dá)系統(tǒng)中某些分系統(tǒng)往往同時(shí)需要某一分系統(tǒng)的數(shù)據(jù),所以某一分系統(tǒng)就需要同時(shí)將數(shù)據(jù)發(fā)送給多個(gè)分系統(tǒng)。比如某些支持遠(yuǎn)程終端的雷達(dá)系統(tǒng),因?yàn)樾枰娨?紅外數(shù)字視頻同時(shí)顯示在本地終端和遠(yuǎn)程終端上,所以必須要采用組播的通信方式。但如果圖3中的交換機(jī)1和2不具備IGMP Snooping技術(shù)的話,那么當(dāng)數(shù)字視頻由電視/紅外跟蹤器發(fā)送給交換機(jī)1和交換機(jī)2后,交換機(jī)1和2將向所有與它相連的端口洪泛數(shù)字視頻,本來(lái)不需要數(shù)字視頻的端口也會(huì)收到該數(shù)據(jù),這樣將會(huì)影響整個(gè)網(wǎng)絡(luò)的性能,嚴(yán)重的還會(huì)造成整個(gè)網(wǎng)絡(luò)癱瘓。如果采用了IGMP Snooping技術(shù),那么數(shù)據(jù)只會(huì)發(fā)送給注冊(cè)有組播成員的端口,這樣將大大減少不必要的網(wǎng)絡(luò)流量,優(yōu)化網(wǎng)絡(luò)性能。
本文對(duì)IGMP Snooping技術(shù)進(jìn)行了介紹和分析,通過(guò)分析可以看出將IGMP Snooping技術(shù)應(yīng)用于以太網(wǎng)雷達(dá)總線系統(tǒng)的交換機(jī)中,將大大減少組播過(guò)程中不必要的網(wǎng)絡(luò)流量,節(jié)省網(wǎng)絡(luò)資源,優(yōu)化網(wǎng)絡(luò)性能。所以雷達(dá)系統(tǒng)設(shè)計(jì)師在選擇構(gòu)建以太網(wǎng)總線雷達(dá)系統(tǒng)的交換機(jī)時(shí),應(yīng)選擇支持IGMP Snooping技術(shù)的交換機(jī)。
[1]杜旭,張連靖,余江等.IGMP Snooping協(xié)議實(shí)現(xiàn)方案[J].計(jì)算機(jī)應(yīng)用,2004,24(zl):14-15.
[2]王軍,吳志美.交換式以太網(wǎng)上的多播協(xié)議[J].軟件學(xué)報(bào),2003,14(3):496-502.
[3] 謝希人,計(jì)算機(jī)網(wǎng)絡(luò)(第4版)[M].北京:電子工業(yè)出版社,2004.
[4]Haberman B.Multicast Router Discovery[S].RFC 4286,2005.
[5]Christensen M.Considerations for IGMP and MLD Snooping Switches [S]. RFC 4541,2006.