首页> 中国专利> 工业以太网数据分流和链路冗余设计

工业以太网数据分流和链路冗余设计

摘要

本发明在工业以太网中的二层交换机上设计一个多环并行的拓扑结构来实现数据的分流和链路的冗余功能。该拓扑结构存在多个数据环路,同时还存在一个备份环路,它采用802.1Q协议来隔离不同的环路,同时当数据环路出现故障时转换到备份环路,当数据环路恢复正常后切换回来。每个环路中有一台主交换机,它有主端口和备份端口,备份端口是冗余端口处于阻塞状态一般不进行数据传输,如果环路出现故障,主交换机的备份端口打开恢复通信,当环路恢复正常后,主交换机的备份端口恢复阻塞发出通知消息,环路中的非主交换机收到消息后恢复到原始状态进行数据通信。

著录项

  • 公开/公告号CN103095540A

    专利类型发明专利

  • 公开/公告日2013-05-08

    原文格式PDF

  • 申请/专利权人 武汉迈威光电技术有限公司;

    申请/专利号CN201310018271.5

  • 发明设计人 周厚明;崔磊;

    申请日2013-01-18

  • 分类号H04L12/437(20060101);H04L12/939(20130101);H04L12/801(20130101);

  • 代理机构

  • 代理人

  • 地址 430073 湖北省武汉市东湖开发区光谷大道62号光谷总部国际6栋9层

  • 入库时间 2024-02-19 19:24:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-10-08

    专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L12/437 变更前: 变更后: 申请日:20130118

    专利权人的姓名或者名称、地址的变更

  • 2016-09-07

    专利权的转移 IPC(主分类):H04L12/437 登记生效日:20160819 变更前: 变更后: 申请日:20130118

    专利申请权、专利权的转移

  • 2016-04-13

    授权

    授权

  • 2013-06-12

    实质审查的生效 IPC(主分类):H04L12/437 申请日:20130118

    实质审查的生效

  • 2013-05-08

    公开

    公开

说明书

技术领域

工业以太网对数据通信的稳定性和可靠性的要求很高,传统交换机之间的树形拓扑结构不能适应这种要求,为此设计一种多环并行共存的环状拓扑结构满足这种要求。本设计运行在二层交换机上工作在数据链路层,在数据链路层上保证数据的分流隔离,同时在出现链路故障时,可以在毫秒时间内快速自愈恢复通信。背景技术

工业以太网是发展最快的工业通信网络,有替代传统的现场总线技术的趋势。为了适应市场上对工业以太网产品的需求,许多厂商提供了自己的工业以太网交换机产品。工业通信对通信的稳定性要求非常高,需要保证任意两点之间通信的可靠性,偶尔故障,也要在很短的时间中快速恢复,传统的树形结构拓扑不能提供故障恢复机制。区别于众多厂商的现行交换机环网实现方案,本发明提出一种多环并行的交换机链路拓扑结构,使不同种类的数据在各自不同的数据环网中流动,同时提供一个备份环路,当数据环网故障时,快速却换到备份环路中。各个环中有唯一的主交换机执行特定算法来保证物理上环形的拓扑结构在逻辑上是一种树形结构从而避免数据链路层环路所引发的广播风暴。

发明内容

本设计采用的多环并行拓扑结构的交换机采用IEEE 802.1Q协议来分流隔离不同环网中数据。IEEE 802.1Q协议用来实现逻辑工作组,同一个组中的成员可以互相通信,不同组的成员之间不能互相通信。该协议在普通数据帧的源MAC地址后面添加4个字节,其中前2个字节是VLAN协议标签固定值为0x8100,它的后2个字节是VLAN具体内容部分里面有VID字段长度是12bit,VID代表数据帧属于的VLAN。交换机内部有一张VTU表格,它负责记录交换机的端口所在的VLAN,同一个VLAN有相同的VID可以互相通信,不同的VLAN有不同的VID,不能相互通信。当一个数据帧进入交换机后,如果该数据帧没有VLAN标签,那么交换机在普通数据帧的源MAC地址后面加上4个字节的VLAN标签,标签中VID设置为交换机端口的PVID,然后查找交换机内部的VTU表格,决定该数据帧只可以在相同的VID所对应的端口发出来。数据流程图如图1所示。设计数据分流的主要工作就是设置端口的PVID,然后在交换机内部建立一张VTU表,用来指导交换机的数据帧转发过程。图2表明确的说明了设计的思想。为了使粗线代表的环网和细线代表的环网进行数据分流,可以把粗线所在环网加入到一个VLAN,细线代表的环网加入另一个VLAN,两个VLAN的数据互相隔离。同时为了保证A1,A2,A3,A4可以互通信,同时和B1,B2,B3,B4保持隔离,可以把A1,A2,A3,A4加入到粗线代表的VLAN中B1,B2,B3,B4加入到细线代表的VLAN中。

根据以上的方案可以实现不同的环网传输不同种类的数据,防止不相干的数据之间互相干扰。同时还有重要的附加作用:当检测出一个环的一条边发生连接故障时,可以马上通过修改VTU表,让数据从另外一个备份环中通过,同时清空交换机的MAC地址表。图2中假设交换机1和交换机2之间的端口3的粗线断了,让交换机1和交换机2端口8加入到粗线所在VLAN即vid=10这个VLAN中,注意此时交换机1和交换机2的端口8同时在粗线和虚线所代表的VLAN中。以后如果检查出交换机1和交换机2的端口3连接的粗线正常,交换机1和交换机2的端口8退出粗线所在的VLAN,同时清空MAC地址表。清空MAC地址表的作用是加快收敛速度,默认情况下MAC地址表中MAC地址条目可以保存大约5分钟,清空地址以后立即进行地址学习。

交换机多个环中,存在一个备用环路,备用环路用于其中一个环的链路出现故障的时候,临时性把故障环的数据流却换到备用环路中,为了加快收敛速度,清空出现故障的交换机的MAC地址表,同时把备用环路端口添加到出现故障的环的VLAN表中。这种情况下故障恢复时间由交换机端口连接状态扫描间隔时间和清空MAC地址表时间决定。图3链路却换示意图说明。一次扫描中,发现交换机1的端口1的连接状态出现故障,交换机1的备份环的端口3加入到端口1所在的VLAN 1中,交换机1的备份环端口3同时在VLAN=1和VLAN=3两个VLAN中。由于清空MAC地址表导致交换机1的MAC地址表为空,以前从端口1发出的报文在进行MAC地址表查询时发现出去报文的目的MAC地址不在MAC地址表中,它进行数据帧的洪泛操作,数据帧的洪泛操作受VLAN表的限制,在VLAN表中,由于端口3加入了端口1的VLAN表,数据帧可以洪泛到端口3,端口2没有加入到端口1的VLAN表,所以不可能洪泛到端口2,从而将原本应该通过端口1发出报文,改成从端口3转发出去,起到却换数据环路的作用。交换机2的处理过程和交换机1的处理过程一样,交换机2的端口1出现故障时,交换机2的端口3加入到端口1所在的VLAN中。下一次扫描过程中发现交换机2的端口1的链接状态正常了,交换机1和交换机2端口3退出所在VLAN 1,只保留它在VLAN 3里面。

交换机拓扑结构如果成环会形成网络风暴,导致通信中断,在上面的图2中必须在每个环中阻塞一个端口,从而在逻辑上破坏环形结构。由于采用VLAN进行分割,所以只要在每个独立的环中,逻辑上破坏一个环网中的任何一个端口的转发状态即可。

单独环网中交换机分成两种角色:主交换机和从交换机。主交换机负责环路的检测和自愈。主交换机两个端口分别是主端口和备份端口,主端口默认是转发状态,备份端口是阻塞状态。环路中的其他交换机设定为从交换机,它们在环网的2个端口设置成转发端口都是转发状态。一个环路阻塞其中一个端口,可以达到破坏环路成环的效果。主交换机的备份端口设置成阻塞状态目的是在该端口收发管理帧(管理帧是一种特殊类型的数据帧,它目的MAC地址是多播地址,管理帧在交换机内部与在交换机外部的结构有差别,而且由于交换机芯片生产商的不同,这些差别和设置方法互不相同。它的最大特点是阻塞端口收发管理帧,而不能收发普通数据帧。),同时阻止普通数据帧的通过,防止环路中出现广播风暴。环路中主交换机根据收到的管理帧判断链路的当前状态,发送故障后根据管理帧的收发处理使环路自愈。管理帧和普通数据帧在结构上的差别是:管理帧在普通帧里面添加标签字段,标签字段包含若干位,这些位指明该数据帧的进来的源端口或者出去的目的端口,其中出去的管理帧的标签字段是程序员控制下添加,进来管理帧的标签字段是交换机的交换芯片自动添加的。环网算法需要根据添加的标签确定管理帧进来或出去的端口编号,可是其它的上层协议不需要该信息,所以为了保证只在管理帧上添加该字段,在普通帧上该字段需要剥离掉,有时需要修改交换机的网卡驱动程序,在驱动程序里面根据目的MAC地址判断,如果是多播管理MAC地址则保留该字段,否则剥离该字段。交换机有三种不同种类和用处的端口分别是:普通端口,CPU端口,交换机之间互联的VLAN TRUNK端口。管理帧和CPU端口密切相关,交换机的交换芯片在收到数据帧后,首先判断是否是管理帧,如果是把该帧转发给CPU,如果不是按照ATU表和VTU表来转发,同时在驱动程序中根据需要剥离里面的标签后交给上层协议进行进一步处理。管理帧的数据机构和含义如下所示。(该结构应该根据交换芯片的特定灵活处理,它的各个字段的位置按照芯片说明来处理)

typedef struct {

BYTE DestAddress[6];  //目的地址

BYTE SrcAddress[6];   //源地址

WORD VlanProtocol;             //van协议编号

WORD VlanInfo;             //van协议内容

WORD Protocol;      //协议编号

DWORD TAG;         //管理帧标签域       

WORD Ring_ID;            //环网编号

WORD Command_Type;//命令的类型

} PACKED RingRecvHead;  

每个环的主交换机主端口周期性的发送探测报文,按照每个环网的具体配置,设置发送数据帧的Tag字段,该字段用于指导交换芯片收到该数据帧后从一个特定的端口转发出去。环网中相连的从交换机收到探测报文,该报文在交换机内部被转发给CPU,CPU解析Tag字段,确定数据帧进来的源端口,它和Ring_id字段两个一起决定该数据帧的转发端口,构建发送的管理帧然后从该端口发送出去。发送的管理帧和进来管理帧在目的MAC地址,源MAC地址,Ring_id, Command_Type,Protocol都一样,Tag部分进行修改用于指示出去的端口编号。数据帧的Tag字段只在交换机的交换芯片内部才起作用,该数据帧离开交换机的时候被交换芯片自动的剥离掉该TAG。环网中的从交换机都重复上面的处理过程,这样从主交换机的主端口发出的探测报文,在链路完好的情况下可以从主交换机的备份端口接收到,主交换机的备份端口收到管理帧后只处理不转发。如果接收到探测报文说明链路是正常的,否则是不正常的。数据在环网中流动情况如下图4所示:为了简洁方便假设下面两个环的主交换机都在同一个交换机,在实际实现中可以放到一个交换机中,也可以放到不同的交换机中。

每个环路中的交换机都有一个定时器,它周期性扫描交换机的端口连接状态,若连接端口出现故障,则立即把端口的状态设置成阻塞状态,防止该端口在恢复正常状态后造成网络风暴,因为当检测出链路的故障后,主交换机的备份端口将从阻塞状态被设置成转发状态,一旦以前故障的端口恢复正常后,环网中的所有端口都在转发状态,这就造成了广播风暴。检测链路断开有两种方法。

第一种是主交换机周期性的发送探测报文,接收探索报文来实现。如果环路是正常的,那么主端口周期性发出的探测报文,一定可以在备份端口收到。如果收不到探测报文,那么判定环路中出现故障。断定环路出现故障后,主交换机把备份端口的状态设置成转发状态,然后发出link_change报文,通知环网中的客户交换机链路出现了故障,客户交换收到该报文后,根据报文中ring_id字段判断自己的两个环网端口的链接状态,如果它们处于链接故障状态,那么设置它们的端口状态为阻塞状态,否则不用设置,然后清空自己的MAC地址数据库,向同一个环网的另外一个端口进行转发。如果主交换机收到了探测报文并且备份端口的状态是转发状态,那么主交换机设置备份端口的状态为阻塞状态,发出link_complet报文,客户交换机收到该报文,解析报文,根据报文里面的TAG字段中确定进来的数据帧的源端口编号,根据环网的具体的配置和Ring_id编号确定该报文被转发的目的端口编号,同时如果该端口是阻塞状态,那么把端口的状态设置成转发状态,最后当link_complet回到主交换机时,主交换机停止转发。上面设计保证同一个时刻一个完好的环网中有一个端口是阻塞状态,从而在逻辑上阻塞环网成环。(注意普通数据帧不能通过阻塞端口,管理帧完全在程序控制下转发给CPU端口,程序控制CPU收到管理帧的处理过程)

第二种方法是环网中的交换机各自周期性检测自己端口的连接状态,如果连接发生变化,发送消息上传给主交换机处理。第二种方法比第一种方法可以更快的检测到链路故障。具体的过程是:交换机定时扫描环网中端口的连接变化情况,如果有从交换机参与环网的端口连接断开,把该端口设置成阻塞状态,清空MAC地址表,然后从该环路中没有故障的端口发送link_down报文。该报文在环路中被转发,同时接收到link_down报文的交换机清空自己的mac地址表,根据报文中的环网编号和进来的源端口编号确定目的端口号转发该报文。最终主交换机收到该报文,主交换机检测报文的环网编号,把对应环网编号的备份端口设置成转发状态。主交换机处理完以后从进来的端口发出link_down_confirm报文,接收的交换机根据报文中的环网编号和进来的源端口端口,确定转发的端口,然后判断该端口的状态,如果是阻塞状态,则停止转发,否则进行转发。检测出链路断开变化的交换机发送link_down报文,如果收到link_down_confirm报文则在下一个检测周期停止发送link_down报文,否则在下一个周期再次重复发送link_down报文,通知环网中的主交换机处理。交换机周期性检查环网端口连接变化时如果发现断开端口的连接状态恢复正常时,该交换机发送link_up报文,里面包含环网编号,该报文被转发同时清空mac地址表,处理过程和link_down相同,最后被环网中主交换机接收,主交换根据环网编号,把以前处于转发状态的备份端口重新设置成阻塞状态,然后发送link_up_confirm报文,该报文被环网中的从交换机转发,处理过程和link_down_confirm相同,最后被原先发出link_up报文的交换机收到,它把以前阻塞的端口重新设置成转发状态并停止转发该报文。如果原发出link_up的交换机没有收到link_up_confirm报文,那么它在下一端口扫描中重复发送link_up报文直到收到主交换机的link _up_confirm报文。交换机的端口状态变化图如图5所示,从交换机的处理流程图如图6所示。

附图说明

图1 数据在交换机内部的处理流程

图2 交换机连接示意图

图3 链路切换说明图

图4 检测链路环路的状态示意图

图5 端口状态变化迁移图

图6 从交换机的处理流程图

具体实施方式

首先交换机把端口加入到正确的VLAN中,设置环网端口的VLAN,把环网端口设置为VLAN TRUNK端口,保证各个VLAN在各自的环中运行。然后设置一个备用环用于临时性传递数据,设置各个环的主交换机和各个环的环网端口和环网编号,设置扫描时间打开程序开始运行。

本设计方案在4台交换机组成的单环网中,交换机扫描连接状态的间隔时间设置成10ms,测得的平均自愈时间在8ms左右,最大自愈时间是12ms,完全可以满足工业通信的要求。多环平行的环路中,一个环路出现故障,可以转换到备份VLAN环路中,进一步加快自愈的时间。自愈时间=扫描间隔时间+操作VTU表的时间,扫描间隔时间可以在不影响交换机的性能情况下尽可能短,操作VTU表的时间和驱动程序相关也和芯片性能和操作方式密切相关,需要读写交换芯片VTU表,一般可以在1毫秒内完成。这种方法最大的优点是自愈时间是个常数,不会随着环网中交换机的个数增多而变慢。备份环路只是临时性传输数据的作用,同时在每个环网中运行链路检测和自愈算法,它的时间和单环网中交换机个数成正比台数越多自愈时间越长。自愈时间公式:总的自愈时间=扫描间隔时间+max(两个方向link_down报文的转发时间之和+所经过环路的交换机清空mac地址表的时间)。一条线路连接两个交换机,其中每个交换机都必须独自通知主交换机连接状态改变了,所以最好情况下是这两个交换机和主交换机的位置在环网的中间,最差情况是两者相邻。引入备份环路的主要作用就是让总的自愈时间和环网的规模无关。当环路自愈以后,VLAN设置还原到以前状态。数据流从备份VLAN恢复到自己的原始VLAN有两种选择时机,第一种是连接恢复正常恢复到开始的环路中,第二种是该连接断开被主交换机确认后,收到link_up_confrim确认消息后从备份VLAN环路中却换到原始VLAN环路中。上面两种方法只需要修改交换机的VTU表即可。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号