基于兼容实时同步的可定义以太网的链路层冗余方法与流程

您所在的位置:网站首页 prp网络报文格式 基于兼容实时同步的可定义以太网的链路层冗余方法与流程

基于兼容实时同步的可定义以太网的链路层冗余方法与流程

2023-03-27 02:47| 来源: 网络整理| 查看: 265

基于兼容实时同步的可定义以太网的链路层冗余方法与流程

1.本发明属于互联网技术领域,涉及互联网数据链路层的冗余协议,具体涉及基于兼容实时同步的可定义以太网的链路层冗余方法。

背景技术:

2.高可用性对于工业以太网和基于以太网的控制系统至关重要,例如高铁自动控制系统和变电站自动化系统。由于标准以太网不支持容错能力,因此可以通过使用冗余协议来提高以太网的高可用性。以太网的各种冗余协议已经被开发和标准化,例如快速生成树协议(rstp)、媒体冗余协议(mrp)、并行冗余协议(prp)、高可用性无缝冗余(hsr)等。其中rstp和mrp在网络中提供冗余,缺点是存在切换延迟。而prp和hsr在端节点中提供无缝冗余,可以提供零恢复时间,但prp需要重复的网络基础设施,而hsr主要用于基于环的拓扑。因此现有的冗余协议存在效率不高、协议复杂的问题,且无法向网络用户提供灵活定义功能。3.传统数据交换设备一般由控制面、数据面及管理面组成,其中管理面与控制面总是具有较高的耦合性,而兼容实时同步通信的可定义以太网将控制面从原先架构中分离出来,形成了应用层、控制层及转发层三层架构,可以简化交换设备使其成为受远程软件控制的转发装置,使得网络配置和故障响应都变得更加容易。使用兼容实时同步通信的可定义以太网实现网络设备之间的通信,需要控制器、交换设备以及终端设备,其中控制器用于控制调度表、高优先级静态流表以及低优先级动态流表的下发,所述交换设备以及终端设备基于时钟校准模块进行全局/区域时间同步,终端设备作为发送端将网络消息发送至交换设备,所述交换设备接收网络消息后根据控制器下发的调度表与流表类型,发送网络消息至对应的接收端。在兼容实时同步通信的可定义以太网中,网络消息被划分为实时控制消息(real-time message,rm)以及常规消息(normal message,nm)。对于rm类消息的传输,由发送端根据全局同步时间周期性触发,交换机经过定时触发的高优先级静态流表进行转发,最终在预期的时间窗口内被接收端接收;而nm类消息则是由各个节点根据事件随机触发,发送端发送nm消息时,将等待直到该发送端周期性触发的rm消息发送时间窗口结束后再进行发送。4.基于兼容实时同步通信的可定义以太网设计相应的冗余协议,可以从链路上实现实时控制消息的高安全性和高冗余度,提高以太网的高可用性。

技术实现要素:

5.针对现有技术的不足,本发明提出了基于兼容实时同步的可定义以太网的链路层冗余方法,采用集中分布式的控制架构,由多个主控设备组成网络传输控制器,控制各个交换设备的实时报文转发路径,实现主控制器、通讯链路和设备端口上的冗余。6.基于兼容实时同步的可定义以太网的链路层冗余方法,具体包括以下步骤:7.步骤1、搭建兼容实时同步通信的可定义以太网系统,包括多个交换设备、主控设备和终端设备。在该以太网系统中,每一对需要进行实时控制信息通讯的终端设备之间具有多条可以使用的信息通路,且至少有一个终端设备作为主控制器,实现整网的实时控制、调度。所述主控制器作为集中式通信拓扑管理设备,可以采用冗余方式,由多个主控制器协同实现网络传输控制功能,各个交换设备作为分布式通信拓扑管理设备,与主控制器共同组成基于兼容实时同步的可定义以太网的网络通信拓扑实时管理架构。8.步骤2、基于同步协议进行整网的时间同步,主控设备获取终端设备间的线路时延。交换设备采集各端口单位时间发送数据量、接收数据量以及误码率,发送到主控设备,并由主控设备存储在数据库中。交换设备通过一个从控制器,管理与自身相关的数据。9.步骤3、主控设备根据步骤2中采集的数据与线路时延,在任意两个源终端设备与接收终端设备之间,挑选其中最优的n条通路作为这两个终端设备间的冗余通路,完成流表优化,并按顺序将流表分发给交换设备。所述流表的内容包括源mac、目的mac、冗余包序号和对应交换设备的转发端口。其中冗余包序号表示交换设备所属的通路。10.作为优选,在流表优化过程中,两个终端设备间最优通路的评判标准为线路时延、线路带宽占用率、线路误码率中的一种或多种。11.作为优选,采用dijkstra算法选择最优通路,完成流表优化。12.步骤4、选定n条通路后,源终端设备对待发送的实时控制消息进行复制,复制后的消息包数量不超过n个。然后在计算每个消息包的crc校验值之前,在以太网类型字段插入id,并在crc前的最后一个字节中插入该消息包对应的冗余包序号。13.步骤5、交换设备接收主控设备下发的流表,按照流表中规定的转发端口,将源终端设备处理后的实时控制消息通过对应端口转发到接收终端设备。14.步骤6、接收终端设备对从交换设备接收到的所有冗余消息包进行多数表决后,综合成一个正确报文,用于后续的协议解析。15.本发明具有以下有益效果:16.本发明通过类似于软件定义以太网的技术,采用集中分布式的控制架构,由多个主控设备组成网络传输控制器,控制各个交换设备的实时报文转发路径。本方法在物理层和数据链路层实现了主控制器,交换机,通讯链路以及终端接口上的冗余。与传统rstp等链路冗余技术不同,本发明选择网络传输路径依靠的是实时通路信息,而不是固有带宽。其中主控制器采集整网实时拓扑信息,通过对不同通道的时延、带宽和误码率进行比较,使用dijkstra算法找到其中的多个最优转发路径。在实时发送终端构建多个冗余报文,多个通路的交换机依照网络传输制器下发的流表进行转发,并在实时接收终端综合不同路径、不同时间到达的冗余报文,通过对整网中所有通路中的实时控制信息进行规划控制,可以从通信链路上根本实现实时控制消息的高安全性和高冗余度,在网络中的某个设备出现故障或受到网络攻击时,仍可以保证系统稳定性和实时信息传输的确定性和精确率,从根本上提高工业控制系统的可靠性。附图说明17.图1是实施例中基于兼容实时同步的可定义以太网设备示意图;18.图2是实施例中基于兼容实时同步的可定义以太网硬件结构示意图;19.图3是实施例中交换机从控制器的功能流程图;20.图4是实施例中流表建立与优化的流程图;21.图5是实施例中冗余协议的报文结构示意图;22.图6是实施例中接收终端设备接收冗余报文的流程图。具体实施方式23.以下结合附图对本发明作进一步的解释说明;24.基于兼容实时同步的可定义以太网的链路层冗余方法,具体包括以下步骤:25.步骤1、搭建兼容实时同步通信的可定义以太网,如图1所示,包括多个交换设备s1~s5、两个主控设备和终端设备a、b,其中a作为发送消息的源终端设备,b作为接收消息的接收终端设备。在本实施例中,终端设备a、b可以通过交换设备s1~s5构成的环网进行实时控制信息通讯。26.如图2所示,所述交换设备包括fpga交换芯片和嵌入式cpu。其中fpga交换芯片用于流表管理、数据采集、实时控制消息的协议封装与解析,以及根据流表转发实时控制消息。嵌入式cpu作为从控制器,用于数据统计、流表查询以及控制指令下发。嵌入式cpu和fpga交换芯片之间使用两种通讯方式通讯,分别是spi和mac层网络。两种通讯方式代表了嵌入式cpu的两种角色——fpga交换芯片的控制器和以太网中的一个普通终端。27.在spi通讯中,设置通讯模式为双工,嵌入式cpu作为主机,向fpga交换芯片发起读/写寄存器操作,spi报文自定义格式为:前导码,寄存器地址,寄存器值。写寄存器的步骤为:嵌入式cpu将待写入的寄存器地址插入报文的寄存器地址字段,将待写入的值插入报文的寄存器值字段。读寄存器的步骤为:嵌入式cpu发送报文给fpga交换芯片,告知需要读取的寄存器地址;fpga交换芯片立刻将指定的寄存器内容取出并打包为spi报文;嵌入式cpu发送报文给fpga交换芯片,清空需要读取的寄存器地址以防重复读取,同时,fpga交换芯片将打包好的报文发送给嵌入式cpu。在以太网通讯中,嵌入式cpu作为一个终端接入fpga交换芯片,可以使不同交换设备的cpu以及控制设备之间网络相连,从而实现分布式算法的部署以及控制设备的远距离管理。28.所述终端设备能够支持实时控制消息,可以是接入多实时网卡的设备或嵌入式设备。每个终端设备至少包含两个网口,可以进行冗余发送和冗余接收。29.所述主控设备为pc机或工控机,与交换设备中的嵌入式cpu之间构成复数网络连接,并融合于原以太网中,构成集中-分布式控制结构。为防止主控制器故障导致系统瘫痪,可以采用主备两个主控制器或者多个主控制器共同连接入网络系统中。多个主控制器相互通讯,互相监视,主动切断错误控制器,并发布正确命令。与终端设备不同的是,主控设备只需要支持普通报文通讯。主控设备用于在数据库中对各个交换设备传输的采样信息和流表状态进行管理,并根据数据库中的信息进行流表优化,下发最优流表调度策略给各个交换设备。此外,主控制器还具备一个主数据库,存储了所有交换设备的id、mac、ip、工作状态、端口id与对应端口状态,以及各个端口的实时发送带宽、实时接收带宽和实时发送误码率),和所有链路两端设备id、链路带宽、所有终端设备的id、mac、ip、工作状态。该主数据库具备老化功能,在一定时间后将过期条目删除。30.所述多主控制器冗余方法包括如下过程:多个主控制器确保只有一个是激活的,可以向交换机发送指令。同时,激活的主控制器将定时向其它主控制器发送自身状态报文。其它未激活的主控制器在发现激活的主控制器出现故障后,利用stp的选举方法,决策出新的主控制器进行激活,并通报所有交换机,不再信任故障主控制器的指令,从而完成主控制器的冗余更替。31.步骤2、基于同步协议进行整网的时间同步,主控设备在同步过程中获取终端设备间的线路拓扑和线路时延。32.获取线路拓扑的方法为:交换设备的嵌入式cpu作为从控制器收集自身周围的相关拓扑信息,上传至主控设备进行整合。如图3所示,交换设备的嵌入式cpu具备一个分拓扑管理数据库,用于实时保管各个端口的状态、信息,以及端口对端设备id、mac和ip。当端口对端设备为交换设备时,保存对端交换设备和链路的相关信息;当端口对端设备是终端设备时,保存对端终端设备和端口的相关信息。所述的拓扑发现过程分为以下四个部分:33.第一部分是主控设备管理所有交换设备:在所有交换设备的嵌入式cpu上电后立即发送udp上报报文,每隔500ms发送一次。当主控设备收到交换设备的上报报文后,返回对应交换设备,确认报文。查询数据库内是否有相应的交换设备,若没有,由mac的hash码生成新的交换设备id,并存储相关数据;若有,则更新相关数据。34.第二部分是交换设备获取相邻交换设备链路:所有交换设备的嵌入式cpu在收到主控设备的确认报文后,开始洪发拓扑发现报文(lldp报文),包括自身的ip和mac。在fpga交换芯片输出该报文之前,将输出端口id戳打在报文中。为了限制拓扑发现报文不进行转发,只能进行一次接收,需要做出如下操作:各交换设备的fpga交换芯片在接收到拓扑发现报文后,在报文中打上接收端口id戳和本端口带宽戳,并将拓扑发现报文的目的mac(群发mac)更改为交换设备自身的嵌入式cpu对应的mac。在交换设备的嵌入式cpu接收到拓扑发现报文后,根据源端口id、接收端口id和源端口的ip、mac,获得该条链路的所有信息,并存储在嵌入式cpu的数据库中。拓扑发现报文的关键在于以太网类型与常规以太网类型不同,且具备以下格式:本机mac+本机ip+出端口id+出端口带宽+入端口id+入端口带宽。35.第三部分是交换设备获取相邻终端设备信息:所有终端设备每隔一段时间发送拓扑声明报文,该报文会被直接转入直连交换设备的嵌入式cpu中,所述嵌入式cpu会获取该终端设备的ip、mac以及端口号。同样存储在交换设备的数据库中。36.第四部分是每隔一段时间,嵌入式cpu将本地链路数据库打包报文上传至主控设备。交换设备中的fpga交换芯片持续收集各端口的发送数据量、接收数据量以及误码率,将相应的数据存储在特定位置的寄存器中。嵌入式cpu作为spi通讯的主机,每隔一秒的时间向作为spi从机的fpga交换芯片发出请求,读取对应寄存器的数据,在嵌入式cpu中对数据进行整合处理后,封入通讯报文中通过普通以太网报文通道发送给主控设备,并由主控设备存储在数据库中。37.获取线路时延的方法为:假设每个交换设备sx上至少有一个终端记为ex。在时钟同步的过程中,假定终端设备a是master角色,由其向所有其它slave终端发起时钟同步,所有终端设备与交换设备之间的线路时延近似为td。终端设备a对e1时钟同步,获得时延ta1=ts1+2td。然后,终端设备a对e3时钟同步,获得时延ta3=ts1+ts3+2td+tl,13。通过计算ta3-ta1则可以获得ts3+tl,13,也就获得了对应通讯段的时延。同理,通过上述过程获取其它通讯段的线路时延。然后将线路时延由终端设备发送到主控设备。38.步骤3、主控设备根据步骤2中采集的线路时延t,实时发送带宽占用率bt、实时接收带宽占用率br和实时接收误码率be,在源终端设备a与接收终端设备b之间挑选其中最优的n条通路作为这两个终端设备间的冗余通路,完成流表优化。具体过程是首先将以太网整体结构用加权的无向图g=(v,r)表示,其中v为顶点,表示整网的所有交换设备和终端设备,r为代表加权的无向边,则终端设备a、b是集合v中的两个元素,从顶点a到b的路径t是一个顶点序列,该序列中不存在类型是终端设备的顶点,根据图1所示的网络结构可知,终端设备a、b之间的路径有以下四种:39.①a→s1→s3→b40.②a→s1→s4→s2→s5→b41.③a→s2→s4→s1→s3→b42.④a→s2→s5→b43.定义路径的长度d是路径上所有边的权重之和,d=∑w,边的权重由步骤2中采集的数据确定:44.w=t·(ω1bt+ω2br+ω3be)45.其中ω1,ω2,ω3作为设计参数用于构建相应的边的权重。由上式可知,时延越小、带宽占用率越低、误码率越低的路径,权重越小,路径长度越短,也就越应被主控设备优先选择。46.dijkstra算法是一种广度优先搜索方法,其采用一种贪心的策略,通过声明一个数组dia来保存源点到各个顶点的最短距离和一个集合t来保存已经找到最短路径的顶点。初始时,集合t只有顶点a,且顶点a的路径权重被赋为0,dia[s]=0。若对于顶点a存在能直接到达的边(a,b),则把dia[m]设为w,即边上的权值,同时把所有a不能直接到达的顶点的路径长度设为无穷大。然后,从dia数组中选择一个最小值,该最小值就是顶点a到该值对应的顶点的最短路径,将该点加入到集合t中。此时完成一个顶点,然后,判断新加入集合t的顶点是否可以到达其他顶点,且通过该顶点到达其他顶点的路径长度是否比从顶点a直接到达该顶点的路径长度短,如果是,那么就替换这些顶点在数组dia中的值。然后,重复上述过程,直到集合t中包含了所有顶点。[0047]在本实施例中,设置终端设备a、b之间的冗余通道数应用dijkstra算法找到a和b之间的2条最短路径为第③、④条,构造流表。流表的内容包括源mac、目的mac、冗余包序号nab和对应交换设备的转发端口。在本实施例中,冗余包序号nab=0、1,分别对应第③、第④条路径。流表表示主控设备向实施消息转发的交换设备约定的冗余报文需要的转发端口,流表的内容表示当源mac符合+目的mac符合+冗余包序号nab符合,向对应端口转发。[0048]步骤4、在步骤3选定2条冗余通路后,源终端设备对待发送的实时控制消息进行复制,复制后的消息包数量不超过2个。然后按照图5所示建立链路层报文,首先将原报文中两字节的以太网类型转换为一字节的“冗余包序号”与一字节的“实时以太网类型”。交换设备在接收到报文后,会直接读取报文中的实时以太网类型,确定该报文是否为实时报文,然后保存冗余包序号,用于与流表中的冗余包序号进行比对。然后在报文数据结束后,添加一个一段时间内不会重复的id,用于后续冗余接收模块的接收判断。与冗余包序号和实时以太网类型不同,id不需要经过交换设备的识别,可以视为普通数据直接传输。[0049]步骤5、主控设备将优化后的流表分发到交换设备的嵌入式cpu,然后由嵌入式cpu下发给fpga交换芯片。fpga交换芯片用一块ram管理所有流表,并且在嵌入式cpu请求后将流表上传,供主控制器查询。针对源终端设备发送到交换设备合路队列中存储的实时控制消息,读取器冗余包序号,并依次查询流表,得知转发的端口,然后将实时控制消息发送给对应端口的phy芯片。[0050]在流表被下发到fpga交换芯片之后,各个交换设备就已经具备了转发相关冗余报文的能力。当图1所示的系统中任意交换设备或者线路发生故障后,都会反应在超过限值的端口统计数据中。主控设备在实时收集所有端口统计数据时,就可以确认故障节点或是线路,并据此重新拟定流表。[0051]步骤6、接收终端设备接收冗余报文的流程如图6所示,在经过crc校验后,如果报文的源mac或id与前一个所接受的不相同,则开启一个独立的线程。该线程的功能在于启动一个约t1时间长度的时间窗,这个时间长度应能够确保所有冗余报文能够被该线程接收到。值得注意的是,该线程只接收同源mac和同id的冗余报文。一旦有不同的实时报文将会另开其它线程进行接收。当时间窗结束后,对该线程内所接收到的所有报文进行多数表决,在有人攻击了冗余通道中的一个通道,且不改变其它协议的情况下,基于本技术所述的冗余协议,接收终端设备仍能获取正确的数据。[0052]至此,完成了基于兼容实时同步的可定义以太网的链路层冗余方法。需要指出的是,上述实施例仅以一种最优化的技术方案对本发明的技术方案以及设计原理进行的详细阐述,不应理解为对本发明保护范围的限制。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3