張博君 梁文博 漆先虎
(西安電子工程研究所 西安 710100)
隨著網絡技術的不斷發展,點到多點、多點到多點的數據傳輸形式已經越來越多的應用于工程實踐中。采用傳統的網絡單播方式來完成點到多點、多點到多點的數據傳輸,不僅增加了網絡負荷,而且極大的消耗了網絡帶寬,明顯已經不能滿足數據傳輸的需求了。此時,互聯網組管理協議應運而生,能較好的解決上述問題。但互聯網組管理協議并不是完美的,它是一個三層(網絡層)協議,可以減少三層設備(路由器)上不必要的網絡流量,但并不能減少二層(數據鏈路層)設備(交換機)上不必要的網絡流量。IGMP Snooping技術則是為了減少二層組播過程中不必要網絡流量提出的一種運行在二層設備上的優化協議。
以太網總線雷達系統中的某些數據,例如:雷達跟蹤目標時的電視或紅外數字視頻流、目標航跡、點跡、雜波圖、火控信息、故障信息等,要求同時發送給多個分系統,屬于點到多點的數據傳輸方式,各分系統通過這些數據實現雷達的工作狀態監控及控制。采用傳統的網絡單播方式明顯已經不能滿足系統數據傳輸的要求,此時只有采用組播方式才能夠較好解決該問題。出于網絡最小化和工程成本的考慮,以太網總線雷達系統一般采用軍工級的交換機來構建總線系統。而交換機屬于二層設備,那么如何減少二層設備中不必要的組播流量,來減輕網絡負荷,優化網絡,就成為以太網總線雷達系統需要解決的問題。支持IGMP Snooping技術的交換機能很好的管理二層組播數據傳輸。能夠很好的解決上述問題。
IGMP協議是一個三層(網絡層)協議,而交換機屬于二層設備,如果我們采用交換機來搭建一個雷達總線系統,那么就必須有一個運行在二層設備上的組播約束機制,來對組播組進行管理。
IGMP Snooping作為二層組播協議,就是為了避免交換機冗余轉發組播數據導致帶寬損失而產生的。它是運行在二層(數據鏈路層)設備上的組播約束機制,用于管理和控制組播組。
它的基本思想是,通過偵聽IGMP成員報告報文和離開報文來維護二層組播表。管理交換機各端口的組播組成員,從而確定數據轉發的成員對象。
在沒有IGMP Snooping功能的交換機中,收到組播報文的端口將向其他所有端口轉發組播報文。如圖1所示,主機A、B是組播報文發送機與交換機1連接,主機 C、D、E、F、G 與交換機2連接,其中主機C、D是與主機A處于同一組播組的組播報文接收機。主機E、F、G是與主機B處于同一組播組的組播報文接收機。當主機A發送組播報文時,不具備IGMP Snooping功能的交換機1將轉發組播報文到主機B和交換機2。如果交換機2也不具備IGMP Snooping功能,此時它將向它的所有端口洪泛組播報文,即向主機C、D、E、F、G都發送組播報文,而主機B、E、F、G是不需要該組播報文的。同樣當主機B發送組播報文時,交換機1將轉發組播報文到主機A和交換機2。交換機2也將向C、D、E、F、G都發送組播報文,而主機A、C、D是不需要該組播報文的。這樣就會造成不必要的網絡流量,增加了網絡負擔,如果網絡規模和數據量很大的話,這種無關的組播流量會對網絡性能造成很嚴重的影響。

圖1 無IGMP Snooping功能的組播數據傳輸示意圖
如果交換機實現了IGMP Snooping功能,那么交換機在轉發組播報文時,將僅向注冊有組播報文接收機的那些端口轉發組播報文。如圖2所示,圖中實線表示一組組播數據傳輸,虛線表示一組組播數據傳輸,可以看出如果交換機具備了IGMP Snooping功能,那么主機A的數據只會發給與它同一組播組的主機C、D。主機B的數據只會發給與它同一組播組的主機E、F、G。這樣會大大減少網絡中不必要的網絡流量,很好的優化網絡性能。
IGMP Snooping主要有兩個任務,一個是通過對IGMP報文的監聽及二層組播表維護來減少不必要的組播數據流量。另一個是根據組播表中的組播成員信息轉發組播報文。
IGMP協議報文有三種類型:IGMP查詢報文、IGMP成員報告報文以及IGMP離開報文。IGMP Snooping通過監聽IGMP成員報告報文和IGMP離開報文,來維護二層組播表。圖2中交換機1的組播表如表1所示。圖2中交換機2的組播表如表2所示。

圖2 有IGMP Snooping功能的組播數據傳輸示意圖

表1 交換機1二層組播表

表2 交換機2二層組播表
表1和表2中的第一列(組播組成員主機)在實際組播表中是沒有的,這里是為了方便大家理解,實際的組播表只包括組播MAC地址、組播IP地址、端口掩碼這三項。有些組播表還有端口生存時間這一項,它的作用是表示端口生存時間,當定時器計時到一定時間后,端口生存時間減為0,則自動從組播組中刪除該端口。由于大部分的應用都是當發送離開報文時,組播組成員才離開組,所以這里我們對端口生存時間不做討論。
表1和2中主機A、C、D為同一組播組,主機B、E、F、G為同一組播組,組播MAC地址為組播組對應的MAC地址,組播IP地址為組播組對應的IP地址。端口掩碼為16位二進制數,每一位二進制位表示交換機的一個端口,若為“1”表示該端口連接的是組播組成員,“0”則不是。
圖2中主機 A、C、D屬于組播 IP地址為255.0.0.1的組播組,對應的MAC地址為01:00:2C:01:21:30。主機B、E、F、G屬于組播 IP地址為255.0.0.2的組播組,對應的MAC地址為01:00:2C:01:21:31。結合表1中的端口掩碼和圖2可以看出主機A連接在交換機1的0端口,主機B連接在交換機1的1端口。結合表2中的端口掩碼和圖2可以看出主機C、D分別連接在交換機2的2、3端口,主機E、F、G 分別連接在交換機 2的 4、5、6端口。表1和2中端口掩碼的第15位都為“1”,表示交換機1與交換機2是通過15端口相連接的。那么IGMP Snooping的工作過程如下,以主機A、C、D這一組播組為例:
a.交換機1定時向整個網絡發送IGMP查詢報文。發送給主機C、D的查詢報文由交換機1發給交換機2,然后由交換機2轉發。
b.當主機A接收到此報文后,會以IGMP查詢報文對應以太幀中的源MAC地址為目的MAC地址,以主機A所在組播組的MAC地址01:00:2C:01:21:30為源MAC地址,發送IGMP報告報文,通知交換機1端口0存在一個組播組成員,交換機1從端口0接收到IGMP成員報告報文后,從對應的以太幀中獲取目的MAC地址,即01:00:2C:01:21:30。此地址即為該組播組的MAC地址。對于主機C、D,交換機1將查詢報文發送給交換機2,交換機2轉發給主機C、D,主機C、D同樣以IGMP查詢報文對應以太幀中的源MAC地址為目的MAC地址,以主機C、D所在組播組的MAC地址01:00:2C:01:21:30為源MAC地址返回報告報文給交換機2,交換機2再轉發給交換機1。
c.交換機1查找組播表,若表中有對應的組播MAC地址,則將端口掩碼對應位置置為“1”。本例如表1所示,交換機1端口0連接的是主機A,端口15連接的是交換機2,由于交換機2轉發主機C、D的報告報文,所以交換機1認為與交換機2相連的端口15也是組播組成員,故將端口掩碼置為1000 0000 0000 0001,即端口0和15都是該組播組成員。
對于交換機2,它也會定時向整個網絡發送IGMP查詢報文,收到交換機1和主機C、D的IGMP報告報文后,它也會建立一個如表2所示的組播表。由于交換機1轉發主機A的報告報文,所以交換機2認為與交換機1相連的端口15也是組播組成員。該組播MAC地址和組播IP地址與表1中主機A所在組相同,表示主機A、C、D在同一組播組。將端口掩碼置為1000 0000 0000 1100,表示交換機2 的2、3、15 端口相連的主機C、D和交換機1都是該組播組的成員。
d.若主機C、D被設置為不再接收組播組255.0.0.1的組播報文,則主機C、D會立即發送一個IGMP離開報文到IGMP查詢者,即交換機1和2。對于交換機1來說,主機C、D的離開報文由交換機2轉發,那么交換機1認為與交換機2連接的端口15不再是該組播組的成員,收到離開報文后它會刪除交換機1組播表中的對應項,即將端口15從表中該組刪除,即將端口掩碼對應項置為0。對于交換機2來說,它也會將端口2、3(即主機C、D),從交換機2組播表中的對應項中刪除,這樣主機C、D將不再是該組播組的成員,不再接收該組播組的數據。
e.組播報文的轉發過程是這樣的,當交換機1收到主機A發送的組播報文時,它會取出組播報文的目的MAC地址,即01:00:2C:01:21:30,也就是組播MAC地址。然后在組播表中查找該MAC地址對應的表項,若找到對應項,則根據端口掩碼直接向該組成員轉發組播報文。若沒找到對應表項則丟棄該組播報文。
以上就是IGMP Snooping的工作過程,對于主機B、E、F、G這一組組播組,工作過程與主機A、C、D這一組組播組是相同的。如果組播報文的發送方不是主機 A、B,而是主機 C、D、E、F、G 中的任意一臺或者幾臺,它的工作過程和以上介紹的是相同的。
以太網總線雷達系統網絡基本框圖如圖3所示。以太網總線雷達系統一般具有兩臺交換機,圖3中的交換機1一般安裝在雷達箱體內,交換機2一般安裝在雷達操控方艙中。兩臺交換機通過雷達匯流環中轉數據。

圖3 以太網總線雷達系統網絡基本框圖
在雷達系統中某些分系統往往同時需要某一分系統的數據,所以某一分系統就需要同時將數據發送給多個分系統。比如某些支持遠程終端的雷達系統,因為需要電視/紅外數字視頻同時顯示在本地終端和遠程終端上,所以必須要采用組播的通信方式。但如果圖3中的交換機1和2不具備IGMP Snooping技術的話,那么當數字視頻由電視/紅外跟蹤器發送給交換機1和交換機2后,交換機1和2將向所有與它相連的端口洪泛數字視頻,本來不需要數字視頻的端口也會收到該數據,這樣將會影響整個網絡的性能,嚴重的還會造成整個網絡癱瘓。如果采用了IGMP Snooping技術,那么數據只會發送給注冊有組播成員的端口,這樣將大大減少不必要的網絡流量,優化網絡性能。
本文對IGMP Snooping技術進行了介紹和分析,通過分析可以看出將IGMP Snooping技術應用于以太網雷達總線系統的交換機中,將大大減少組播過程中不必要的網絡流量,節省網絡資源,優化網絡性能。所以雷達系統設計師在選擇構建以太網總線雷達系統的交換機時,應選擇支持IGMP Snooping技術的交換機。
[1]杜旭,張連靖,余江等.IGMP Snooping協議實現方案[J].計算機應用,2004,24(zl):14-15.
[2]王軍,吳志美.交換式以太網上的多播協議[J].軟件學報,2003,14(3):496-502.
[3] 謝希人,計算機網絡(第4版)[M].北京:電子工業出版社,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.