现场总线/工业以太网
按行业筛选
请选择行业
----------------------
-全部行业
------------------
-机床与金属加工设备
-刀具/量具/夹具/磨具
-模具设计与制造
-塑料机械/橡胶机械
-通用机械/化工机械
-工程机械/建材机械
-交通运输/海工装备
-农业机械
-食品机械/烟草机械
-包装机械
-印刷机械/广告设备
-纺织机械
-木工/造纸/环保/医疗设备
-物流设备
-智能楼宇/安防设备
-炉窑/热处理设备
-五金工具
------------------
-工业自动化
-佳工激光网
-仪器/仪表/衡器
-电力设备
-电子/通讯/办公文具
-家电/照明/健康设备
------------------
-基础件/通用件
-标准件
-工业原材料
-电子元器件及材料
-包装材料
------------------
-CAD/CAM/PDM/PLM
-ERP/制造业信息化
-管理咨询/认证
-服务/培训/工业设计
按产品筛选
----------------------
-本行业全部文章
--------------------
-变频器
-PLC
-伺服与运动控制
-工业安全产品/工业
-人机界面
-传感器
-机器视觉
-工业PC/工控机
-现场总线/工业以太
-数据采集/无线通讯
-嵌入式系统/自动化
-工业机器人
查看本类全部文章
交换式工业以太网中的多播方法
作者:张奇智 曹春生 张卫东
摘 要: 工业控制网络中大量采用“生产者-消费者”的通信模式,网络中存在着大量的多播数据,传统交换机对多播数据的广播式处理方式会大大降低交换式以太网的性能。本文在对比分析交换式以太网中现有几种多播方法的基础上,指出了它们各自在交换式工业以太网中的使用范围。
关键词:交换式工业以太网;多播;虚拟局域网;IGM 窃听;Cisco 多播管理协议;GARP 多播注册协议
1. 引 言
在工业控制网络中,大量的实时数据常采用“生产者-消费者”的通信模式进行传送,其中生产者是发送实时数据的工作站,它产生的数据可以同时被多个消费者使用。这种通信模式一方面可以保证同一实时数据在空间上的一致性,另一方面可以节省带宽,因为每个新产生的实时数据只需要发送一次。
工业网络中这种“一对多”的数据相应于以太网中的多播数据帧,而多播数据在传统以太网交换机中是以广播的方式发送,因为交换机一般是通过查看它收到的以太网数据帧的源地址来学习各端口相连工作站的MAC 地址的,而多播MAC 地址从来不会被用在一个以太网数据帧的源地址中,交换机没有方法动态地学习它们。当网络中存在着大量的多播数据时,由多播帧引起的广播数据会消耗掉大量的带宽,甚至会引起“广播风暴”使网络进入不稳定状态。最容易想到的方法是为交换机的每个端口静态地配置多播地址,这种方法是可行的,但可扩展性和动态适应性都很差。
本文的第2 到5 小节对目前交换式以太网中常采用的四种多播方式进行了介绍。第6小节对它们进行了对比分析,并指出了各自在工业以太网中的适用范围。
2. 虚拟局域网(Virtual LAN)
VLAN 是指在交换局域网的基础上,采用网络管理软件构建的可跨越不同网段、不同网络的端到端的逻辑网络。一个VLAN 组成一个逻辑子网,即一个逻辑广播域,它可以覆盖多个网络设备,允许处于不同地理位置的网络用户加入到一个逻辑子网中。VLAN 的主要优点之一就是可以抑制网络广播风暴,一个VLAN 就是一个逻辑广播域,通过对VLAN 的创建,隔离了广播,缩小了广播范围,可以控制广播风暴的产生[1]。
从而可以设想将属于每个“生产者-消费者”数据组的工作站组成一个VLAN,当其中的生产者发送多播数据时,只有属于该VLAN 的数据组成员才能接收到相应的多播数据。控制网络中只要存在一个“生产者-消费者”数据组,就对应于一个VLAN。显然,某个控制网络中的应分配的VLAN 数量将与其中的“生产者-消费者”数据组个数成正比。由于位于控制层的控制器往往参与到多个控制回路中完成优化控制运算,它应该同时位于多个VLAN 中,才能与多个控制回路中的工作站交换数据。
对于小型的控制网络,这种多播方式也许是可行的,但对于中等规模和大规模的控制网络,为数众多的VLAN 势必会大大降低控制网络的性能,并给VLAN 的管理和维护带来极大的困难,在大型控制网络中“生产者-消费者”数据组个数甚至会超过可用的VLAN 数量(4096 个)。
由于VLAN 的安全机制,属于不同VLAN 的通信成员之间相互通信时必须通过路由器进行转交。如图1 所示,位于VLAN1 工作站A 有数据要向位于VLAN2 中B 发送时,工作站A 必须首先把自己的数据转交给网络中的路由器,再由路由器其转交给工作站B。路由器的介入势必会增大数据的传输延迟,对于实时报文甚至可能使其失去实时性。虽然带有硬件路由功能的第三层交换机可以增强需要路由传输的数据的实时性,但会增加整个网络的成本,并会增加网络管理的复杂性。
图1 不同VLAN 的工作站通过路由器转发数据
3. IGMP 窃听(IGMP Snooping)
互联网组管理协议IGMP(Internet Group Management Protocol)定义了工作站如何向路由器注册以便能接收到特定的IP 多播数据。当以太网交换机收到工作站和路由器之间传递的IGMP 报文时,通过截取并分析IGMP 报文所带的信息,在链路建立和维护MAC 多播地址转发表,以后从路由器下发的多播报文就根据该表中的“多播组-端口”对应关系进行转发[2][3]。
3.1 通过IGMP 窃听加入某一多播组
图2 通过IGMP 窃听加入一个多播组
当工作站是某交换组中第一个希望加入某一多播组的工作站时,如图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 服务(如生成树协议)相区别。
图3 GMRP 帧协议格式
(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 来实现多播的应限制在小型的控制网络中。表1 四种多播方式的对比
使用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(end)
文章内容仅供参考
(投稿 )
(11/13/2007)
对 现场总线/工业以太网 有何见解?请到 现场总线/工业以太网论坛 畅所欲言吧!