時間:2007-08-06 15:05:00來源:shixiang
圖1 不同VLAN 的工作站通過路由器轉發數據[/align]
3. IGMP 竊聽(IGMP Snooping)
互聯網組管理協議IGMP(Internet Group Management Protocol)定義了工作站如何向路由器注冊以便能接收到特定的IP 多播數據。當以太網交換機收到工作站和路由器之間傳遞的IGMP 報文時,通過截取并分析IGMP 報文所帶的信息,在鏈路建立和維護MAC 多播地址轉發表,以后從路由器下發的多播報文就根據該表中的“多播組-端口”對應關系進行轉發[2][3]。
3.1 通過IGMP 竊聽加入某一多播組
[align=center]
圖2 通過IGMP 竊聽加入一個多播組[/align]
當工作站是某交換組中第一個希望加入某一多播組的工作站時,如圖2 中的工作站A,加入過程如下:工作站A 先主動向路由器發送一條IGMP 成員報告,交換機通過截取分析該成員報告得知工作站希望加入的多播組,然后為其創建一個多播項目組,并把它鏈接到工作站A 所在的端口和所有的路由器端口。最后交換機把該IGMP 成員報告轉發給路由器端口,以便路由器能夠接收到該IGMP 報告,并相應地更新它的多播路由表。
當工作站希望加入一個已存在的多播組時,如圖2 中工作站B 希望加入工作站A 已經加入的多播組中。交換機只是簡單的將該工作站所在端口鏈接到已存在的多播組上,不再向路由器轉發IGMP 報告,而是使用代理報告(Proxy Reporting)機制每隔10s 向路由器為每個多播組轉發一次IGMP 報告。這種代理報告機制可以減少IGMP 竊聽多播機制消耗的帶寬[3]。
3.2 使用IGMP 竊聽離開一個多播組
當工作站想離開一個多播組時,它可以簡單的忽略周期的IGMP 詢問報文,或者發送一條IGMP Leave 報文。當交換機收到對某多播組的IGMP Leave 報文時,則會向接收該報文的端口發送所離開組的特定組查詢報文,以確認此端口相連的工作站中還有沒有該多播組的其他成員,同時啟動一個查詢響應定時器。如果在該定時器超時還沒有收到該多播組的報告報文,則將該端口從相應的MAC 多播組中移除。如果MAC 多播組在交換機的各個端口都沒有組成員時,交換機將通知多播路由器將該分支從多播樹中刪除[2]。
4. Cisco 組管理協議(Cisco Group Management Protocol)
CGMP 是Cisco 公司專有的組管理協議,它是在多播路由器和交換機之間使用的一種通信協議,主要工作方式是多播路由器通過CGMP 報文通知交換機它所得到的IGMP 信息,交換機上的CGMP 模塊會把接收到CGMP 幀中的“多播組-工作站”對應關系轉換為“多播組-端口”對,并基于此建立本地的多播地址轉發表,然后依照這個關系轉發多播數據[3][4]。
4.1 CGMP 的數據幀格式
CGMP 是目的地址為0x01-00-0C-DD-DD-DD 以太網數據幀, 它主要包含以下字段[4]:
(1) 版本號,1 或2。
(2) 報文類型,加入(Join)或離開(Leave)。
(3) 計數值,報文幀中包含的多播/單播地址對。
(4) GDA(Group Destination Address),48 位的多播MAC 地址。
(5) USA(Unicast Source Address),欲加入某一多播組的48 位的單播MAC 地址。
4.2 使用CGMP 加入一個多播組
當工作站希望加入某一多播組時,它發送一條IGMP 成員報告。路由器收到該IGMP報告后,把IGMP 幀中所聲明的多播MAC 地址拷貝到CGMP Join 數據幀的GDA 字段中,把發送站的源MAC 地址拷貝到CGMP Join 數據幀的USA 字段中,然后把構建好CGMP 數據幀發送給交換機。具有CGMP 多播功能的交換機監聽到目的地址為0x01-00-0C-DD-DD-DD 的數據幀后,它的處理器到自己的“地址-端口”表中去查找對應的USA。一旦USA 在表中被找到,交換機知道了該USA 位于哪個端口,然后它進行下列其中一項操作:
(1) 為GDA 創建一個新的多播項目組,并把USA 對應的端口和所有的路由器端口鏈接到該GDA。
(2) 如果屬于該GDA 的多播項目組已經存在,交換機只是把該USA 對應的端口加入到已有GDA 的端口列表中。
4.3 使用CGMP 離開一個多播組
當使用IGMPv1,工作站希望離開一個多播組時,不發送IGMP leave 報文, 路由器在兩次連續的IGMP 詢問沒有收到回應后,發送IGMP Leave 報文。如果仍舊有用戶對某多播組感興趣,屬于該多播組的端口就不會從多播樹上被刪除掉。當使用IGMPv2 時,工作站希望離開某一多播組時,可以發送IGMP Leave 報文。CGMPv2 借助該機制可以使工作站快速離開一個組(CGMP Fast-Leave)。
CGMP Fast-Leave 處理方式允許交換機在端口監視引擎模塊(具有IGMP 解析功能的硬件模塊)中監聽工作站發往所有路由器多播地址(224.0.0.2)的IGMPv2 Leave 報文。當它發現有Leave 報文時,就啟動一個查詢響應計時器,并發送一條查詢報文到接收到該Leave 報文的端口,以確認該端口是否還有工作站希望接收到此多播組數據。如果在定時器超時時還沒有收到CGMP Join 報文,則該端口從IGMP Leave 報文所標明的多播組的多播樹中被移除。如果它是該多播組的最后一個端口,交換機就把IGMP Leave 報文轉發到路由器端口。然后路由器通過發送一個特定組的查詢報文啟動正常的刪除過程,因為不會收到響應報文,路由器就在多播路由表中把相應的端口刪除掉。同時路由器也發送一條CGMP Leave 報文給交換機把該多播組從轉發表中刪除掉 [3]。
5. GARP 多播注冊協議(GARP Multicast Registration Protocol)
在IEEE 802.1D 標準中定義了GMRP,它使用GARP(generic attribute registration protocol)協議機制聲明和注冊工作站和交換機監聽接收多播數據的需要。
5.1 GMRP 的幀格式
GMRP 的數據幀格式如圖3 所示,其各個字段的意義如下:
(1) GMRP 應用地址,為多播地址0x01-80-C2-00-00-20。
(2) 源地址,取產生該GMRP 數據幀的設備的單播地址。
(3) 長度,標明整個GMRP 數據幀的長度。
(4) LLC 頭,所有GARP 應用都使用源地址和目的地址為0x42 的LLC 服務接入點,控制字段取值為0x03 標明為無連接服務。
(5) 協議ID,所有GARP 應用都使用值為0x0001 的協議ID,以便和其他LLC 服務(如生成樹協議)相區別。
[align=center]
圖3 GMRP 幀協議格式[/align]
(6) GMRP 屬性類別, GMRP 數據幀可以包含多個GMRP 信息字段,用值0x00 標明GMRP信息的結束。GMRP 信息具有兩種屬性類別:當屬性類型為0x01 時表明后面是組成員屬性列表,用來聲明接收特定多播數據的需要;當屬性類型為0x02 時是為了保證兼容不支持GARP 的設備。
(7) GMRP 屬性列表,屬性列表可以包含多個屬性值,每個屬性值包含三個元素:屬性長度;屬性事件,標明對屬性值要采取的行為,加入或離開一個多播組;屬性值,當屬性類別取組成員屬性時為48 位的MAC 多播地址[5][6]。
5.2 GMRP 的多播原則
GMRP 的實現基于GARP 工作機制,用于維護交換機中的動態多播注冊信息。所有支持GMRP 特性的交換機都能夠接收來自其他交換機的多播注冊信息,并動態更新本地的多播注冊信息,同時也能將本地的多播注冊信息向其他交換機傳播,以便使同一交換網內所有支持GMRP 特性的設備的多播信息達成一致。GMRP 依據下面的原則進行操作[5]:
(1) 設備通過Join 命令聲明它們加入某多播組的愿望,該聲明可以通過Leave 命令撤銷。
(2) 當同一網段的已有設備聲明對某一多播組感興趣時,如果另外一個對該多播組感興趣的設備監聽到了該聲明,它無需再明確提出聲明。
(3) 交換機在某一端口監聽到對某一多播組的聲明時,它在該端口為該多播組添加一個注冊信息。當聲明某一多播組服務的所有設備都離開后,交換機將向其他交換機注銷掉對該多播組的聲明。
(4) 交換機會把一個端口的注冊信息向其他端口廣播,同時多播注冊信息將沿生成樹進行廣播。
6. 四種多播方式的對比分析
在表1 中對上述四種多播通信方式進行了對比。除VLAN 外,其他幾種多播方式都是針對多播通信特點設計的多播解決方案,它們本質上都是通過某種方法來構建二層的多播樹,并減少網絡上不必要的數據傳輸。雖然在控制領域有不少學者提出用VLAN 來解決交換式工業以太網中的多播問題,但通過第2 小節的分析可知,VLAN 并不是多播通信的理想解決辦法。它只適合具有較少“生產者-消費者”數據組成員個數的控制網絡,而且不同VLAN 之間的通信應限制在一定流量內,因為它們必須通過路由器轉發,當不同VLAN 之間的通信流量較大時,路由器就會成為控制網絡中的通信瓶頸。因此用VLAN 來實現多播的應限制在小型的控制網絡中。
[align=center]
表1 四種多播方式的對比[/align]
使用CGMP 協議時,由路由器根據接收到的IGMP 報文構建CGMP 報文然后再發送給交換機進行二層多播配置,因此在使用CGMP 協議時,多播路由器是必須的設備。當使用IP 竊聽時,由于交換機可以代替多播路由器來解析IGMP 信息,通過適當的配置,進行多播配置時可以不需要路由器的介入,而由交換機代理路由器的相關功能。IGMP 竊聽方法和CGMP 協議的提出都是源于互聯網上多媒體通信快速增長的需要,它們在構建二層的多播樹時都利用了三層網絡上的IGMP 報文信息,二層的多播地址是由三層的IP 多播地址轉換得到的,因此參加二層多播的工作站也必須配置三層的IP 多播地址。另一方面,CGMP 和IP 竊聽都是專有的多播解決方案,其中CGMP 只被Cisco 的交換機和路由器支持,相比之下,IP 竊聽方法有多個交換機廠商支持,但其實現方法并沒有一個統一的標準。
GMRP 的提出一方面是源于互聯網上多媒體多播通信快速增長的需要,另一方面也是交換式以太網普遍采用提出的要求(在共享式以太網中不存在多播通信消耗大量帶寬的情況)。CMRP 是純二層的協議,它所使用的GARP 注冊協議也同時被VLAN 采用來注冊各個工作站的VLAN 屬性(GVRP,GARP VLAN Registration Protocol),因此在以太網交換機中,CMRP 會獲得越來越廣泛的支持。在使用GMRP 時,工作站的網絡接口卡和協議棧也必須提供對GMRP 的支持,但現有設備和系統的協議棧對GMRP 的支持并不充分。
因此在工業交換式以太網中,目前可考慮采用CGMP 或IP 竊聽來解決實時數據的多播問題,待工作站的接口卡和系統的協議棧對GMRP 做出相應改進后,逐漸過渡到使用GMRP來解決二層控制網絡中的多播問題。
7. 總結
本文分析了工業控制網絡中的數據通信特點:即存在大量多播數據,并介紹了目前交換式以太網中比較常用的四種多播方法:VLAN,IGMP 竊聽,CGMP,GMRP,對它們的特點進行了對比分析,指出了各自的使用范圍。另一方面,由于交換機的學習注冊過程需要一定時間,如果在這段時間內傳送數據,對于未知的多播地址,交換機仍然以廣播的方式發送數據,依然會導致廣播風暴,引起控制網絡的不穩定性。因此在各工作站正式通信前,有必要引入一個學習期,使各個站點有足夠的時間進行多播地址的注冊,在這段時間內,交換機也可以學習各個工作站的單播地址,從而在正式傳送控制數據時盡可能地減少網絡上的廣播數據。
參考文獻
[1] IEEE Std 802.1Q. IEEE Standards for Local and Metropolitan Area Networks: Virtual Bridged Local Area Network[S]. 1999
[2] 王軍,吳志美. 交換式以太網上的多播協議[J]. 軟件學報,2003,14(3): 496-502
[3] Cisco Systems Inc. Multicast in a Campus Network: CGMP and IGMP Snooping [J/OL]. URL:http://www.cisco.com/. 2003
[4] Kennedy C. and Kevin H. Cisco LAN Switching [M]. Cisco Press, 1999, 773-598
[5] IEEE Std 802.1D, 1998 Edition. Media Access Control (MAC) Bridges [S]
[6] Rich Seifert. The Switch Book [M]. Wiley Computer Publishing, 2000, 422-429標簽:
上一篇:基于虛擬儀器技術的手機翻蓋...
傳動網版權與免責聲明:凡本網注明[來源:傳動網]的所有文字、圖片、音視和視頻文件,版權均為傳動網(www.cdcst56.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“傳動網”,違反者本網將追究其法律責任。
本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。
產品新聞
更多>2025-09-08
華為昇騰Atlas800iA2 910B服務器Deepsee...
2025-09-04
2025-08-06
2025-07-08
2025-06-30
2025-06-16