摘 要: 工業(yè)控制網(wǎng)絡(luò)中大量采用“生產(chǎn)者-消費者”的通信模式,網(wǎng)絡(luò)中存在著大量的多播數(shù)據(jù),傳統(tǒng)交換機對多播數(shù)據(jù)的廣播式處理方式會大大降低交換式以太網(wǎng)的性能。本文在對比分析交換式以太網(wǎng)中現(xiàn)有幾種多播方法的基礎(chǔ)上,指出了它們各自在交換式工業(yè)以太網(wǎng)中的使用范圍。
關(guān)鍵詞:交換式工業(yè)以太網(wǎng);多播;虛擬局域網(wǎng);IGM 竊聽;Cisco 多播管理協(xié)議;GARP 多播注冊協(xié)議
1. 引 言
在工業(yè)控制網(wǎng)絡(luò)中,大量的實時數(shù)據(jù)常采用“生產(chǎn)者-消費者”的通信模式進行傳送,其中生產(chǎn)者是發(fā)送實時數(shù)據(jù)的工作站,它產(chǎn)生的數(shù)據(jù)可以同時被多個消費者使用。這種通信模式一方面可以保證同一實時數(shù)據(jù)在空間上的一致性,另一方面可以節(jié)省帶寬,因為每個新產(chǎn)生的實時數(shù)據(jù)只需要發(fā)送一次。
工業(yè)網(wǎng)絡(luò)中這種“一對多”的數(shù)據(jù)相應(yīng)于以太網(wǎng)中的多播數(shù)據(jù)幀,而多播數(shù)據(jù)在傳統(tǒng)以太網(wǎng)交換機中是以廣播的方式發(fā)送,因為交換機一般是通過查看它收到的以太網(wǎng)數(shù)據(jù)幀的源地址來學習各端口相連工作站的MAC 地址的,而多播MAC 地址從來不會被用在一個以太網(wǎng)數(shù)據(jù)幀的源地址中,交換機沒有方法動態(tài)地學習它們。當網(wǎng)絡(luò)中存在著大量的多播數(shù)據(jù)時,由多播幀引起的廣播數(shù)據(jù)會消耗掉大量的帶寬,甚至會引起“廣播風暴”使網(wǎng)絡(luò)進入不穩(wěn)定狀態(tài)。最容易想到的方法是為交換機的每個端口靜態(tài)地配置多播地址,這種方法是可行的,但可擴展性和動態(tài)適應(yīng)性都很差。
本文的第2 到5 小節(jié)對目前交換式以太網(wǎng)中常采用的四種多播方式進行了介紹。第6小節(jié)對它們進行了對比分析,并指出了各自在工業(yè)以太網(wǎng)中的適用范圍。
2. 虛擬局域網(wǎng)(Virtual LAN)
VLAN 是指在交換局域網(wǎng)的基礎(chǔ)上,采用網(wǎng)絡(luò)管理軟件構(gòu)建的可跨越不同網(wǎng)段、不同網(wǎng)絡(luò)的端到端的邏輯網(wǎng)絡(luò)。一個VLAN 組成一個邏輯子網(wǎng),即一個邏輯廣播域,它可以覆蓋多個網(wǎng)絡(luò)設(shè)備,允許處于不同地理位置的網(wǎng)絡(luò)用戶加入到一個邏輯子網(wǎng)中。VLAN 的主要優(yōu)點之一就是可以抑制網(wǎng)絡(luò)廣播風暴,一個VLAN 就是一個邏輯廣播域,通過對VLAN 的創(chuàng)建,隔離了廣播,縮小了廣播范圍,可以控制廣播風暴的產(chǎn)生[1]。
從而可以設(shè)想將屬于每個“生產(chǎn)者-消費者”數(shù)據(jù)組的工作站組成一個VLAN,當其中的生產(chǎn)者發(fā)送多播數(shù)據(jù)時,只有屬于該VLAN 的數(shù)據(jù)組成員才能接收到相應(yīng)的多播數(shù)據(jù)。控制網(wǎng)絡(luò)中只要存在一個“生產(chǎn)者-消費者”數(shù)據(jù)組,就對應(yīng)于一個VLAN。顯然,某個控制網(wǎng)絡(luò)中的應(yīng)分配的VLAN 數(shù)量將與其中的“生產(chǎn)者-消費者”數(shù)據(jù)組個數(shù)成正比。由于位于控制層的控制器往往參與到多個控制回路中完成優(yōu)化控制運算,它應(yīng)該同時位于多個VLAN 中,才能與多個控制回路中的工作站交換數(shù)據(jù)。
對于小型的控制網(wǎng)絡(luò),這種多播方式也許是可行的,但對于中等規(guī)模和大規(guī)模的控制網(wǎng)絡(luò),為數(shù)眾多的VLAN 勢必會大大降低控制網(wǎng)絡(luò)的性能,并給VLAN 的管理和維護帶來極大的困難,在大型控制網(wǎng)絡(luò)中“生產(chǎn)者-消費者”數(shù)據(jù)組個數(shù)甚至會超過可用的VLAN 數(shù)量(4096 個)。
由于VLAN 的安全機制,屬于不同VLAN 的通信成員之間相互通信時必須通過路由器進行轉(zhuǎn)交。如圖1 所示,位于VLAN1 工作站A 有數(shù)據(jù)要向位于VLAN2 中B 發(fā)送時,工作站A 必須首先把自己的數(shù)據(jù)轉(zhuǎn)交給網(wǎng)絡(luò)中的路由器,再由路由器其轉(zhuǎn)交給工作站B。路由器的介入勢必會增大數(shù)據(jù)的傳輸延遲,對于實時報文甚至可能使其失去實時性。雖然帶有硬件路由功能的第三層交換機可以增強需要路由傳輸?shù)臄?shù)據(jù)的實時性,但會增加整個網(wǎng)絡(luò)的成本,并會增加網(wǎng)絡(luò)管理的復雜性。
圖1 不同VLAN 的工作站通過路由器轉(zhuǎn)發(fā)數(shù)據(jù)
3. IGMP 竊聽(IGMP Snooping)
互聯(lián)網(wǎng)組管理協(xié)議IGMP(Internet Group Management Protocol)定義了工作站如何向路由器注冊以便能接收到特定的IP 多播數(shù)據(jù)。當以太網(wǎng)交換機收到工作站和路由器之間傳遞的IGMP 報文時,通過截取并分析IGMP 報文所帶的信息,在鏈路建立和維護MAC 多播地址轉(zhuǎn)發(fā)表,以后從路由器下發(fā)的多播報文就根據(jù)該表中的“多播組-端口”對應(yīng)關(guān)系進行轉(zhuǎn)發(fā)[2][3]。
3.1 通過IGMP 竊聽加入某一多播組
圖2 通過IGMP 竊聽加入一個多播組
當工作站是某交換組中第一個希望加入某一多播組的工作站時,如圖2 中的工作站A,加入過程如下:工作站A 先主動向路由器發(fā)送一條IGMP 成員報告,交換機通過截取分析該成員報告得知工作站希望加入的多播組,然后為其創(chuàng)建一個多播項目組,并把它鏈接到工作站A 所在的端口和所有的路由器端口。最后交換機把該IGMP 成員報告轉(zhuǎn)發(fā)給路由器端口,以便路由器能夠接收到該IGMP 報告,并相應(yīng)地更新它的多播路由表。
當工作站希望加入一個已存在的多播組時,如圖2 中工作站B 希望加入工作站A 已經(jīng)加入的多播組中。交換機只是簡單的將該工作站所在端口鏈接到已存在的多播組上,不再向路由器轉(zhuǎn)發(fā)IGMP 報告,而是使用代理報告(Proxy Reporting)機制每隔10s 向路由器為每個多播組轉(zhuǎn)發(fā)一次IGMP 報告。這種代理報告機制可以減少IGMP 竊聽多播機制消耗的帶寬[3]。
3.2 使用IGMP 竊聽離開一個多播組
當工作站想離開一個多播組時,它可以簡單的忽略周期的IGMP 詢問報文,或者發(fā)送一條IGMP Leave 報文。當交換機收到對某多播組的IGMP Leave 報文時,則會向接收該報文的端口發(fā)送所離開組的特定組查詢報文,以確認此端口相連的工作站中還有沒有該多播組的其他成員,同時啟動一個查詢響應(yīng)定時器。如果在該定時器超時還沒有收到該多播組的報告報文,則將該端口從相應(yīng)的MAC 多播組中移除。如果MAC 多播組在交換機的各個端口都沒有組成員時,交換機將通知多播路由器將該分支從多播樹中刪除[2]。
4. Cisco 組管理協(xié)議(Cisco Group Management Protocol)
CGMP 是Cisco 公司專有的組管理協(xié)議,它是在多播路由器和交換機之間使用的一種通信協(xié)議,主要工作方式是多播路由器通過CGMP 報文通知交換機它所得到的IGMP 信息,交換機上的CGMP 模塊會把接收到CGMP 幀中的“多播組-工作站”對應(yīng)關(guān)系轉(zhuǎn)換為“多播組-端口”對,并基于此建立本地的多播地址轉(zhuǎn)發(fā)表,然后依照這個關(guān)系轉(zhuǎn)發(fā)多播數(shù)據(jù)[3][4]。
4.1 CGMP 的數(shù)據(jù)幀格式
CGMP 是目的地址為0x01-00-0C-DD-DD-DD 以太網(wǎng)數(shù)據(jù)幀, 它主要包含以下字段[4]: