本发明属于针对电网广域相位测量系统可靠通信的
技术领域:
:,具体地涉及一种针对电网广域相位测量系统的弹性可靠路由器。
背景技术:
::在现代电网中在变电站、配电网等大量部署了相位测量单元(phasormeasurementunit,pmu)实现对电网线路和变压器的监测,pmu采集数据通常通过ieeec37.118.2或iec61850-9-2规约传输到相位数据集中器(phasordataconcentrator,pdc),采集频率可达到每秒钟10-60次,端到端的数据传输时延要求达到35-50ms之间。pdc所采样的数据对于电网监控与数据采集系统(scada)的状态估计正确性至关重要。然而,由于链路故障、网络拥塞等造成数据包丢失问题难以避免,对于数据包的快速重传恢复是确保数据包按期交付的关键。现有技术采用的是tcp(transmissioncontrolprotocol)重传控制,然而其重传成功率受到了回执数据包(acknowledgement,ack)和重传数据包丢失的影响;其对于丢失数据包推测时间以及tcp发送端和接收端的传输时间均会严重增加端到端的数据传输时延,影响scada的状态估计和保护动作,进而破坏电网的安全稳定运行。因此,解决丢失数据包重传的成功率和高效性是确保pmu和pdc之间正常测量与控制的关键问题。技术实现要素:针对现有技术中存在的问题,本发明提供了一种针对电网广域相位测量系统的弹性可靠路由器,提升了上述丢失数据包重传的成功率和效率,充分考虑电网广域相位测量系统的应用特点。为实现上述目的,本发明采用如下技术方案:一种针对电网广域相位测量系统的弹性可靠路由器,包括data数据包处理模块、retransreq数据包处理模块、retransreport数据包处理模块、基本数据包处理模块、多路径转发状态表模块、内容存储队列模块和物理端口;所述基本数据包处理模块在接收到retransreq数据包时,将retransreq数据包传递给retransreq数据包处理模块,所述retransreq数据包处理模块先会调用内容存储队列模块获取与retransreq数据包相匹配的data数据包,如果匹配,则会调用多路径转发状态表模块获取匹配的下一跳的物理端口,将匹配的data数据包发送到下一跳的物理端口;所述基本数据包处理模块在收到data数据包后,调用data数据包处理模块,如发现data数据包发生丢失,则先发送retransreport数据包,后发送retransreq数据包;并调用多路径转发状态表模块,查询下一跳的物理端口,并将所述data数据包从该物理端口发送出去;所述基本数据包处理模块收到retransreport数据包时,将retransreport数据包传递给retransreport数据包处理模块,调用多路径转发状态表模块,查询下一跳的物理端口,并将所述retransreport数据包发送到下一跳的物理端口中。进一步地,所述data数据包处理模块的工作过程为:(1)如果data数据包的数据类型为原始数据,则跳转执行步骤(3);否则如果所述data数据包的dataid记录在已经转发的数据包dataid集合中时,结束data数据包处理模块的工作过程,否则将所述data数据包的dataid添加到已经转发的数据包dataid集合中;(2)如果所述data数据包的数据类型为单一重传时,则从正在等待的数据包dataid集合和正在等待单一重传的数据包dataid集合中清除掉所述data数据包的dataid;否则,从正在等待批量重传的数据包dataid集合中清除掉所述data数据包的dataid;然后跳转至步骤(9);(3)从所述data数据包中提取dataid,查询先进先出队列中是否存在该dataid,如果存在则不进行如下步骤,否则将该dataid添加到先进先出队列中;(4)检查所述data数据包的dataid是否存在于当前路由器的上游路由器所报告丢失数据包的dataid集合中,如果存在,则将所述data数据包的dataid移除,并跳转至步骤(8);否则,执行步骤(5);(5)如果所述data数据包的dataid与路由器最后转发出去的dataid差值超过2时,则计算出最近未被重传的dataid集合,计算出需要发送批量重传请求的dataid集合,并从等待下一个数据包达到的事件标识集合中删除最近未被重传的dataid集合;(6)如果最近未被重传的dataid集合的大小大于0,则将最近未被重传的dataid集合打包为retransreport数据包,并发送到多路径转发状态表模块中主路径的下一跳路由器;然后,沿着当前路由器的冗余子路径以及多路径转发状态表模块转发项中主路径的上游路径发送retransreq数据包,将所述retransreport数据包的请求重传的dataid集合设置为最近未被重传的dataid集合;将其重传类型设置为批量;将其重传的请求标识设置为唯一值,之后,通过查询多路径转发状态表模块,根据所述retransreport数据包的可靠弹性路由器子图标识和多路径转发状态表模块中主路径的id,找到多路径转发状态表模块中主路径的下游路由器节点的物理端口,并发送携带该retransreq数据包;(7)如果所述data数据包的dataid大于路由器最后转发出去的dataid,则将路由器最后转发出去的dataid更新为data数据包的dataid;(8)将所述data数据包从等待下一个数据包达到的事件标识集合和等待单个数据包重传反馈的retransreq事件标识集合中删除;(9)查询多路径转发状态表模块转发项中主路径的下游路由器的物理端口,如果可查询到,将所述data数据包从该物理端口转发出去;如果未查询到,则将所述data数据包转发到相位数据集中器;(10)如果所述data数据包的dataid等于路由器最后转发出去的dataid,则等待下一个到达数据包的dataid赋值为自最近被转发的data数据包的dataid加1开始不在上游路由器所报告丢失数据包的dataid集合中的最小值,并计算等待下个数据包最大延迟;其中,为等待下一个到达数据包的dataid、为最近被转发的data数据包的dataid、为相位测量单元发送的两个连续测量数据包之间最大间隔时间、为该路由器与其邻接的上游路由器之间的上行链路传输延迟最大值;(11)该路由器开启一个定时计划任务事件,所述计划任务事件延迟执行,如果等待下一个数据包达到的事件标识集合被去除,则该任务终止执行。进一步地,所述retransreq数据包处理模块的工作过程为:(1)从retransreq数据包中提取出请求重传的数据标识集,对于每一个请求重传的dataid,在内容存储队列模块中通过查找最为匹配的数据包,如果查询值为空,则该过程结束;(2)从数据包中提取重传类型为批量或单一,将匹配到的数据包打包为一个新的data数据包,其rsgid、pathid、数据类型以及dataid分别赋值为对应的通信对、入口端口对应的冗余子路径、重传类型以及匹配到的数据包dataid,并设置transient标签,并将其发送回所述数据包的进入物理端口中。进一步地,所述retransreport数据包处理模块的工作过程为:(a)从retransreport数据包中提取dataid的集合记作新发现丢失的数据包dataid集合,当新发现丢失的数据包dataid大于0时,将所述新发现丢失的数据包dataid合并到当前路由器的上游路由器的retransreport数据包的dataid集合中,等待下一个到达数据包的dataid为-1;否则跳转执行步骤(d);(b)对于每个存在于当前路由器的上游路由器的retransreport数据包的dataid集合中的数据包,如果所述数据包存在于等待下一个数据包达到的事件标识集合中,则将所述数据包从等待下一个数据包达到的事件标识集合和等待单个数据包重传反馈的retransreq事件标识集合中移除,并且计算等待下一个到达数据包的dataid更新为当前等待下一个到达数据包的dataid与到达数据包dataid的最大值;之后将到达数据包的dataid从等待批量重传的数据包dataid集合中移除掉;(c)如果等待下一个到达数据包的dataid不等于-1,则赋值为自开始不在中的最小值,并计算等待下个数据包最大延迟;之后,该路由器开启一个定时计划任务事件,该任务延迟执行,如果所述计划任务事件被去除,则该计划任务事件终止执行;(d)查询多路径转发状态表模块转发项中主路径上下一跳路由器的物理端口,并将该retransreport数据包从该物理端口转发出去。进一步地,所述基本数据包处理模块的工作过程为:(1)如果该路由器是冗余子路径上的节点并且非主路径上的节点,则根据该数据包的路径标识、转发方向,在多路径转发状态表模块中查询到对应的转发项,如果转发项非空,则将该数据包打上transient标签,并从查询到转发项对应的物理端口发送出去;(2)如果该数据包未标记transient标签,则将该数据包存储到内容存储队列中;(3)如果该数据包不是多路径转发状态表模块转发项中主路径上转发的数据包,则根据该数据包的路径标识、转发方向,在本地的转发表中查询到对应的转发项,如果转发项非空,则将该数据包打上transient标签,并从查询到转发项对应的物理端口发送出去;(4)如果该数据包的操作符是data,则调用data数据包处理模块;如果是retransreq,则调用retransreq数据包处理模块;如果是retransreport,则调用retransreport数据包处理模块。进一步地,所述内容存储队列模块的工作过程为:(1)初始条件下,在本地初始化一个先进先出队列,队列中的每个单元大小不小于数据包大小的最大值;(2)当有数据包存储请求时,将所述数据包推入到所述先进先出队列的末尾,如所述先进先出队列已满,则在此之前将所述先进先出队列头部元素去除;(3)当有数据包dataid查询请求时,在所述先进先出队列中搜索与数据包dataid最为匹配的数据包dataid,并将匹配到的数据包返回给请求者;如果未查到,则返回空值。进一步地,所述多路径转发状态表模块由多条转发规则项和可靠弹性路由器子图标识对应的转发状态集合构成。与现有技术相比,本发明具有如下有益效果:本发明所述弹性可靠路由器实现丢失数据包的快速检测和网络内的多路径丢失数据包快速重传,检测过程是在作为接收方的一端路由器上完成的,速度较快,且多冗余子路径可避免重传时遇到的链路故障等问题,提升数据包恢复的效率。相比而言,传统路由器不具备丢失数据包的重传能力,而传输控制协议(transmissioncontrolprotocol,tcp)的丢失数据包是在发送方实现的,丢失数据包的检测依赖于对于连续数据包回应丢失的猜测,猜测时间较长,且重传必须开始于发送端,重传路径和重传时间均较长;一旦网络链路发生故障,tcp重传也将失效,导致数据包无法恢复。本发明可改进电网广域相位测量系统通信可靠性,高效解决丢失数据包的快速重传恢复,提高重传成功率,满足控制业务通信的苛刻要求,确保电网安全运行。附图说明图1为本发明针对电网广域相位测量系统的弹性可靠路由器的示意图;图2为可靠弹性路由器在网内重传过程示意图;图3为弹性可靠路由器在广域相位测量系统中的通信过程图。具体实施方式本发明的数据包()采用了统一的数据帧结构,包括如下成员:通信节点对标识、路径标识(pathid)、临时标记(transienttag)、操作符、数据内容,该数据帧可处于现有分组交换网络中的链路层、网络层或传输层之上。如图1为本发明针对电网广域相位测量系统的弹性可靠路由器的示意图,所述弹性可靠路由器包括data数据包处理模块、retransreq数据包处理模块、retransreport数据包处理模块、基本数据包处理模块、多路径转发状态表模块、内容存储队列模块和物理端口;当操作符是retransreq时,该数据帧用于承载重传请求的相关信息,相应的数据内容包括:请求重传的数据标识集合(记作)、重传类型(单一/批量),批量重传标识。当基本数据包处理模块在接收到retransreq数据包时,将retransreq数据包传递给retransreq数据包处理模块,所述retransreq数据包处理模块先会调用内容存储队列模块获取与retransreq数据包相匹配的data数据包,如果匹配,则会调用多路径转发状态表模块获取匹配的下一跳的物理端口,将匹配的data数据包发送到下一跳的物理端口。当操作符为data时,该数据帧用于承载原始/重传的pmu测量数据,相应的数据内容包括:、数据类型、批量重传标识、载荷。其中,载荷部分用于承载pmu的测量数据;数据类型包括原始数据、单一重传、批量重传三种。当基本数据包处理模块在收到data数据包后,调用data数据包处理模块,如发现data数据包发生丢失,则先发送retransreport数据包,后发送retransreq数据包;并调用多路径转发状态表模块,查询下一跳的物理端口,并将所述data数据包从该物理端口发送出去。当操作符是retransreport时,该数据包用于承载上游路由器节点的重传请求情况,相应的数据内容包括:请求重传的数据标识集()、源路由器标识。当基本数据包处理模块收到retransreport数据包时,将retransreport数据包传递给retransreport数据包处理模块,调用多路径转发状态表模块,查询下一跳的物理端口,并将所述retransreport数据包发送到下一跳的物理端口中。所述可靠弹性路由器(resilientroutes,rr)包括两部分:①主路径(primarypath,pp),经过b个路由器,记作,其中,为第个路由器;②对于p中的某个路由器,存在个上游节点可以与之互联,记作,路由器和路由器之间的路径称为冗余子路径(redundantsub-path,rsp)。所述多路径转发状态表模块(forwardingstatetable,fst)由多条转发规则项和可靠弹性路由器子图标识对应的转发状态集合构成;其中每条转发项由如下成员构成:①rr子图标识(rrsubgraphid,rsgid),代表一个pmu和一个pdc通信对;②路径标识(pathid),该标识具备唯一性,代表上述的pp或rsp;③转发方向,取值为上游或下游,下游代表从pmu到pdc的方向,上游与之相反;④路由器输出网络端口的标识。所述每项rsgid对应的转发状态集合包括如下成员:①路由器最后转发出去的dataid;②一个先进先出的队列,其数值集合是由已转发的dataid构成;③dataid的集合,代表当前路由器pp的上游路由器所报告丢失数据包的dataid集合;④等待下一个数据包达到的事件标识集合;⑤等待单个数据包重传反馈的retransreq事件标识集合;⑥等待批量数据包重传反馈的retransreq事件标识集合。图2给出了本发明所述的多个弹性可靠路由器之间在网内重传过程示意图,pmu和pdc之间建立了一条主路径,即。其中在有条rsp到达其上游路由器即,当检测到来自其前一跳的路由器即数据包丢失时,将发送重传请求(retransreq)数据包到其上游路由器,任一上游路由器沿着rsp路径向发送重传的测量数据data数据包,会在收到重传数据包之后,将最早达到的数据包转发到其下游的下一跳路由器即,上述过程具体说明如下:所述data数据包处理模块的工作过程为:(1)如果data数据包的数据类型为原始数据,则跳转执行步骤(3);否则如果所述data数据包的dataid记录在已经转发的数据包dataid集合中时,结束data数据包处理模块的工作过程,否则将所述data数据包的dataid添加到已经转发的数据包dataid集合中;(2)如果所述data数据包的数据类型为单一重传时,则从正在等待的数据包dataid集合和正在等待单一重传的数据包dataid集合中清除掉所述data数据包的dataid;否则,从正在等待批量重传的数据包dataid集合中清除掉所述data数据包的dataid;然后跳转至步骤(9);(3)从所述data数据包中提取dataid,查询先进先出队列中是否存在该dataid,如果存在则不进行如下步骤,否则将该dataid添加到先进先出队列中;(4)检查所述data数据包的dataid是否存在于当前路由器的上游路由器所报告丢失数据包的dataid集合中,如果存在,则将所述data数据包的dataid移除,并跳转至步骤(8);否则,执行步骤(5);该步骤避免重复发送相同的重传请求数据包。(5)如果所述data数据包的dataid与路由器最后转发出去的dataid差值超过2时,则计算出最近未被重传的dataid集合,计算出需要发送批量重传请求的dataid集合,并从等待下一个数据包达到的事件标识集合中删除最近未被重传的dataid集合;(6)如图2所示,如果最近未被重传的dataid集合的大小大于0,则将最近未被重传的dataid集合打包为retransreport数据包,并发送到多路径转发状态表模块中主路径的下一跳路由器;然后,沿着当前路由器的条冗余子路径以及多路径转发状态表模块转发项中主路径的上游路径发送retransreq数据包,将所述retransreport数据包的请求重传的dataid集合设置为最近未被重传的dataid集合;将其重传类型设置为批量;将其重传的请求标识设置为唯一值,设置方法可以是自增值、递减值、随机值等。之后,通过查询多路径转发状态表模块,根据所述retransreport数据包的rsgid、ppid,找到多路径转发状态表模块中主路径的下游路由器节点的物理端口,并发送携带该retransreq数据包;(7)如果所述data数据包的dataid大于路由器最后转发出去的dataid,则将路由器最后转发出去的dataid更新为data数据包的dataid;(8)将所述data数据包从等待下一个数据包达到的事件标识集合和等待单个数据包重传反馈的retransreq事件标识集合中删除;(9)查询多路径转发状态表模块转发项中主路径的下游路由器的物理端口,如果可查询到,将所述data数据包从该物理端口转发出去;如果未查询到,则将所述data数据包转发到相位数据集中器;(10)如果所述data数据包的dataid等于路由器最后转发出去的dataid,则等待下一个到达数据包的dataid赋值为自最近被转发的data数据包的dataid加1开始不在上游路由器所报告丢失数据包的dataid集合中的最小值,并计算等待下个数据包最大延迟;其中,为等待下一个到达数据包的dataid、为最近被转发的data数据包的dataid、为相位测量单元发送的两个连续测量数据包之间最大间隔时间、为该路由器与其邻接的上游路由器之间的上行链路传输延迟最大值;(11)该路由器开启一个定时计划任务事件,所述计划任务事件延迟执行,如果等待下一个数据包达到的事件标识集合被去除,则该任务终止执行。所述任务执行时有两个步骤:首先,通过在fst转发表中查找pp下游的下一跳端口出口,发送携带等待下一个到达数据包的dataid信息的retransreport消息转发给下一跳出口;然后,会沿着其条rsp以及pp的上游路径发送retransreq数据包的重传请求,其数据包中的重传类型为单一,请求重传的数据标识集合为等待下一个到达数据包的dataid,批量重传标识为空值。所述retransreq数据包处理模块的工作过程为:(1)从retransreq数据包中提取出请求重传的数据标识集,对于每一个请求重传的dataid,在内容存储队列模块中通过查找最为匹配的数据包,如果查询值为空,则结束retransreq数据包处理模块的工作过程;(2)从数据包中提取重传类型为批量或单一,将匹配到的数据包打包为一个新的data数据包,其rsgid、pathid、数据类型以及dataid分别赋值为对应的通信对、入口端口对应的冗余子路径、重传类型以及匹配到的数据包dataid,并设置transient标签,并将其发送回所述数据包的进入物理端口中。所述retransreport数据包处理模块的工作过程为:(a)从retransreport数据包中提取dataid的集合记作新发现丢失的数据包dataid集合,当新发现丢失的数据包dataid大于0时,将所述新发现丢失的数据包dataid合并到当前路由器的上游路由器的retransreport数据包的dataid集合中,等待下一个到达数据包的dataid为-1;否则跳转执行步骤(d)。(b)对于每个存在于当前路由器的上游路由器的retransreport数据包的dataid集合中的数据包,如果所述数据包存在于等待下一个数据包达到的事件标识集合中,则将所述数据包从等待下一个数据包达到的事件标识集合和等待单个数据包重传反馈的retransreq事件标识集合中移除,并且计算等待下一个到达数据包的dataid更新为当前等待下一个到达数据包的dataid与到达数据包dataid的最大值;之后将到达数据包的dataid从等待批量重传的数据包dataid集合中移除掉;(c)如果等待下一个到达数据包的dataid不等于-1,则赋值为自开始不在中的最小值,并计算等待下个数据包最大延迟;之后,该路由器开启一个定时计划任务事件,该任务延迟执行,如果所述计划任务事件被去除,则该计划任务事件终止执行。所述计划任务事件执行时有两个步骤:首先,通过在fst转发表中查找pp下游的下一跳端口出口,发送携带等待下一个到达数据包的dataid信息的retransreport消息转发给下一跳出口;然后,会沿着其条rsp以及pp的上游路径发送retransreq数据包的重传请求,其数据包中的重传类型为单一,请求重传的数据标识集合为等待下一个到达数据包的dataid,批量重传标识为空值。(d)查询多路径转发状态表模块转发项中主路径上下一跳路由器的物理端口,并将该retransreport数据包从该物理端口转发出去。所述基本数据包处理模块的工作过程为:(1)如果该路由器是冗余子路径上的节点并且非主路径上的节点,则根据该数据包的路径标识、转发方向,在多路径转发状态表模块中查询到对应的转发项,如果转发项非空,则将该数据包打上transient标签,并从查询到转发项对应的物理端口发送出去;最后结束该基本数据包处理模块的工作过程。(2)如果该数据包未标记transient标签,则将该数据包存储到内容存储队列中;(3)如果该数据包不是多路径转发状态表模块转发项中主路径上转发的数据包,则根据该数据包的路径标识、转发方向,在本地的转发表中查询到对应的转发项,如果转发项非空,则将该数据包打上transient标签,并从查询到转发项对应的物理端口发送出去;(4)如果该数据包的操作符是data,则调用data数据包处理模块;如果是retransreq,则调用retransreq数据包处理模块;如果是retransreport,则调用retransreport数据包处理模块。所述内容存储队列模块的工作过程为:(1)初始条件下,在本地初始化一个先进先出队列,队列中的每个单元大小不小于数据包大小的最大值;所述先进先出队列可基于sram、dram、ssd或磁盘等任意方式来实现;(2)当有数据包存储请求时,将所述数据包推入到所述先进先出队列的末尾,如所述先进先出队列已满,则在此之前将所述先进先出队列头部元素去除,确保队列大小确定;(3)当有数据包dataid查询请求时,在所述先进先出队列中搜索与数据包dataid最为匹配的数据包dataid,并将匹配到的数据包返回给请求者;如果未查到,则返回空值。实施例图3给出了该弹性可靠路由器在现有的pmu和pdc设备通信网中的部署及通信过程示意图,pmu与其pdc的端到端通信通过本发明所涉及到的11台弹性可靠路由器来实现。该pmu和pdc构成的通信对之间的rr建立如下:一是pp路径为,二是对于其中的一个路由器,与其pp上上游的3个路由器分别建立了3条rsp路径分别为:①;②;③。其中,和之间的链路为,和共用,和以及和之间的2条链路为和共用。上由多路径转发状态表模块生成的fst的转发项如表1所示,上fst转发项如表2所示,上的fst转发项如表3所示,其余路由器类似于上面三个例子进行生成,这里不再赘述。同时,在初始条件下,fst的各项转发状态均设置为空。表1:上fst的转发项表2:上fst的转发项表3:上fst的转发项基于上面的rr,阐述本发明中的6个模块协作方式。假定pmu到pdc的数据流可形式化定义为:,其中表示由pmu发送的第个数据包,pmu在发送前,在初始条件下,的rsgid、pathid和数据类型被分别标记为对应的通信对、pp和原始,并且其dataid为自增值,初始为某个正整数值,每次发送后会递增1。这样,当在t时刻,以和之间的链路发生数据包丢失,同时,在时刻,其中为常量,,,和均收到了,并进行转发和处理,则自到t时刻,弹性可靠路由器的处理过程如下:(1)对于的上游路由器,,和,由于是pp上的节点,执行过程中判断重传类型是否为单一重传,如果是,则从正在等待的数据包dataid集合和正在等待单一重传的数据包dataid集合中清除掉所述data数据包的dataid;否则,从正在等待批量重传的数据包dataid集合中清除掉所述data数据包的dataid。然后,将存储在本地内容存储队列中。之后,从提取dataid,查询先进先出队列中是否存在该dataid,如果存在则意味着已经转发数据包,则不进行后续步骤,否则将该dataid添加到先进先出队列中。依据的rsgid、pathid,上述4个路由器分别查询对应的出口地址,如在表1中查找出口地址位于第一条,即达到的出口地址。最后,检查的dataid是否存在于当前路由器的上游路由器所报告丢失数据包的dataid集合中,分两种情况:一种情况是存在于该集合中,则将所述data数据包的dataid移除,将的dataid从等待下一个数据包达到的事件标识集合和等待单个数据包重传反馈的retransreq事件标识集合中删除。另一种情况是不存在,此时如果所述data数据包的dataid与路由器最后转发出去的dataid差值超过2时,则计算出最近未被重传的dataid集合,计算出需要发送批量重传请求的dataid集合,并从等待下一个数据包达到的事件标识集合中删除最近未被重传的dataid集合。上述两种情况是为了避免重复发送相同的重传请求(retransreq)数据包。(2),,和在收到时,因其数据类型为原始数据,则从中提取dataid,查询先进先出队列中是否存在该dataid,如果存在则结束,否则将该dataid添加到先进先出队列中。首先判断数据包的dataid是否记录在已经转发的数据包dataid集合中,如果是重复发送的数据包,则直接丢弃,并不进行如下步骤的处理;否则,视为一个新的data数据包,此时意味着已转发数据包dataid的集合()中只包括了的dataid。由于不在前路由器pp的上游路由器所报告丢失数据包的dataid集合中,则将从等待下一个数据包达到的事件标识集合和等待单个数据包重传反馈的retransreq事件标识集合中删除,将从等待下一个数据包达到的事件标识集合和等待单个数据包重传反馈的retransreq事件标识集合中移除,确保等待重传的事件全部终止运行;在fst中查询到与的rsgid、pathid和下游标记相匹配的转发项,并将转发出去,上述4个路由器分别转发到、、和(即pp上的下一跳路由器)。此时,由于和之间链路断开,则未收到数据包。(3)在上,分为如下两种情况。第一种情况是下一个数据包等待超时,如果等待的等待下一个数据包达到的事件标识集合超时,在处理数据包时生成,则执行如下步骤:首先,将期待重传的下一个dataid(即)通过retransreport数据包发送到pp上的下一跳节点(即),之后将该数据包发至其pp下一跳。然后将retransreq数据包从、、以及到共4条路径上发送,则到将收到retransreq数据包,将该数据包由基本数据包处理模块指派到retransreq数据包处理模块进行处理,由于这些路由器均位于rsp之上,则直接在fst中通过其rsgid、pathid和转发方向信息查询到对应的出口,即在对应rsp上的下一跳路由器。这样,retransreq数据包经过上述3条rsp以及pp上游路径中每个路由器转发到对应的pp上路由器,即、、和。第二种情况是发现数据包丢失,如果收到了,其中,意味着发生了丢失,此时“data数据包处理模块”执行如下步骤:如果的dataid与路由器最后转发出去的dataid差值超过2时,则计算出最近未被重传的dataid集合,计算出需要发送批量重传请求的dataid集合,并从等待下一个数据包达到的事件标识集合中删除最近未被重传的dataid集合,,因而计算出;然后,将打包为retransreport数据包,并发送到pp的下一跳,即,在受到后将转发给它在pp上的下一跳,由于在其fst转发规则中无下一跳,则终止;然后,将通过retransreq数据包从、、和pp上游路径上发送出去,如果则设置重传类型为单一;否则设置重传类型为批量,同时将重传请求标记设置为一个唯一值,如自增值来实现。后续与第一种情况类似。(4)在、和收到retransreq数据包时,则“基本数据包处理模块”不进行存储,然后分配给“retransreq数据包处理模块”处理。具体首先通过该模块调用“内容存储队列模块”,由于,则可查询到作为查询结果,再根据“retransreq数据包处理模块”,将该打包为data数据包,并根据retransreq数据包重传类型对data数据包中的数据类型进行标注,同时将数据包的pathid分别设置、、和pp,从进入端口发出,即、、和。(5)rsp上的路由器至在收到上面步骤(4)的retransreport数据包或重传data数据包时,执行基本数据包处理模块,由于这些路由器均在rsp之上且不再pp上,则根据该数据包的路径标识、转发方向,在多路径转发状态表模块中查询到对应的转发项,将数据包转发至各自fst所对应的rsp上下一条路由器,最终达到。(6)在收到retransreport数据包时,根据“retransreport数据包处理模块”,首先将数据包中的添加至,此时;然后,将清除相关重传等待事件,避免再次发送具有相同dataid的retransreq数据包;最后,根据该模块步骤3,将计算,这里假定为25ms,考虑到当pmu采样频率达到50hz时,对应piat平均值为20ms,并考虑存在最大5ms的偏离,并假定的上行链路传输最大总延迟为2ms,上述数字可人为进行设定,同时计算为;再次,增加一项最大等待时延为的重传事件计划任务,等待的dataid为,避免数据包被重传;最后,由于其下一跳路由器为空,该retransreport不再转发。(7)在收到第5个步骤中来自、和的重传data数据包时,其中,“data数据包处理模块”将对该数据包进行恢复,过程如下:首先,假定来自的最先达到(沿着),则添加到中,后续来自的、和pp上游路径的将被抛弃;然后,依据重传类型为单一或批量,分别决定在单一重传事件(和)或者批量重传事件()中清除,避免重复发送retransreq;再次,将转发到pp下一跳(),转发丢失的数据包;最后,重新计算及其,并开启等待下一个数据包重传的计划任务。(8)即可收到步骤7发送的重传data数据包,从而完成数据包恢复。上述步骤使得在上丢失数据包可以直接从网内的、或上进行恢复,使得即使和之间的链路发生故障,可确保数据包能被恢复,充分利用转发路径上的中间路由器节点,提升了丢失数据包在网络中存储的冗余性,并通过建立多个rsp提升了路径传输的可靠性,其丢失数据包的主动判断和网内重传缩短了重传时间,最终改进了恢复的高效性和成功率。当前第1页1 2 3 当前第1页1 2 3 
技术特征:1.一种针对电网广域相位测量系统的弹性可靠路由器,其特征在于,包括data数据包处理模块、retransreq数据包处理模块、retransreport数据包处理模块、基本数据包处理模块、多路径转发状态表模块、内容存储队列模块和物理端口;
所述基本数据包处理模块在接收到retransreq数据包时,将retransreq数据包传递给retransreq数据包处理模块,所述retransreq数据包处理模块先会调用内容存储队列模块获取与retransreq数据包相匹配的data数据包,如果匹配,则会调用多路径转发状态表模块获取匹配的下一跳的物理端口,将匹配的data数据包发送到下一跳的物理端口;
所述基本数据包处理模块在收到data数据包后,调用data数据包处理模块,如发现data数据包发生丢失,则先发送retransreport数据包,后发送retransreq数据包;并调用多路径转发状态表模块,查询下一跳的物理端口,并将所述data数据包从该物理端口发送出去;
所述基本数据包处理模块收到retransreport数据包时,将retransreport数据包传递给retransreport数据包处理模块,调用多路径转发状态表模块,查询下一跳的物理端口,并将所述retransreport数据包发送到下一跳的物理端口中。
2.根据权利要求1所述针对电网广域相位测量系统的弹性可靠路由器,其特征在于,所述data数据包处理模块的工作过程为:
(1)如果data数据包的数据类型为原始数据,则跳转执行步骤(3);否则如果所述data数据包的dataid记录在已经转发的数据包dataid集合中时,结束data数据包处理模块的工作过程,否则将所述data数据包的dataid添加到已经转发的数据包dataid集合中;
(2)如果所述data数据包的数据类型为单一重传时,则从正在等待的数据包dataid集合和正在等待单一重传的数据包dataid集合中清除掉所述data数据包的dataid;否则,从正在等待批量重传的数据包dataid集合中清除掉所述data数据包的dataid;然后跳转至步骤(9);
(3)从所述data数据包中提取dataid,查询先进先出队列中是否存在该dataid,如果存在则不进行如下步骤,否则将该dataid添加到先进先出队列中;
(4)检查所述data数据包的dataid是否存在于当前路由器的上游路由器所报告丢失数据包的dataid集合中,如果存在,则将所述data数据包的dataid移除,并跳转至步骤(8);否则,执行步骤(5);
(5)如果所述data数据包的dataid与路由器最后转发出去的dataid差值超过2时,则计算出最近未被重传的dataid集合,计算出需要发送批量重传请求的dataid集合,并从等待下一个数据包达到的事件标识集合中删除最近未被重传的dataid集合;
(6)如果最近未被重传的dataid集合的大小大于0,则将最近未被重传的dataid集合打包为retransreport数据包,并发送到多路径转发状态表模块中主路径的下一跳路由器;然后,沿着当前路由器的冗余子路径以及多路径转发状态表模块转发项中主路径的上游路径发送retransreq数据包,将所述retransreport数据包的请求重传的dataid集合设置为最近未被重传的dataid集合;将其重传类型设置为批量;将其重传的请求标识设置为唯一值,之后,通过查询多路径转发状态表模块,根据所述retransreport数据包的可靠弹性路由器子图标识和多路径转发状态表模块中主路径的id,找到多路径转发状态表模块中主路径的下游路由器节点的物理端口,并发送携带该retransreq数据包;
(7)如果所述data数据包的dataid大于路由器最后转发出去的dataid,则将路由器最后转发出去的dataid更新为data数据包的dataid;
(8)将所述data数据包从等待下一个数据包达到的事件标识集合和等待单个数据包重传反馈的retransreq事件标识集合中删除;
(9)查询多路径转发状态表模块转发项中主路径的下游路由器的物理端口,如果可查询到,将所述data数据包从该物理端口转发出去;如果未查询到,则将所述data数据包转发到相位数据集中器;
(10)如果所述data数据包的dataid等于路由器最后转发出去的dataid,则等待下一个到达数据包的dataid赋值为自最近被转发的data数据包的dataid加1开始不在上游路由器所报告丢失数据包的dataid集合中的最小值,并计算等待下个数据包最大延迟;其中,为等待下一个到达数据包的dataid、为最近被转发的data数据包的dataid、为相位测量单元发送的两个连续测量数据包之间最大间隔时间、为该路由器与其邻接的上游路由器之间的上行链路传输延迟最大值;
(11)该路由器开启一个定时计划任务事件,所述计划任务事件延迟执行,如果等待下一个数据包达到的事件标识集合被去除,则该任务终止执行。
3.根据权利要求1所述针对电网广域相位测量系统的弹性可靠路由器,其特征在于,所述retransreq数据包处理模块的工作过程为:
(1)从retransreq数据包中提取出请求重传的数据标识集,对于每一个请求重传的dataid,在内容存储队列模块中通过查找最为匹配的数据包,如果查询值为空,则该过程结束;
(2)从数据包中提取重传类型为批量或单一,将匹配到的数据包打包为一个新的data数据包,其rsgid、pathid、数据类型以及dataid分别赋值为对应的通信对、入口端口对应的冗余子路径、重传类型以及匹配到的数据包dataid,并设置transient标签,并将其发送回所述数据包的进入物理端口中。
4.根据权利要求1所述针对电网广域相位测量系统的弹性可靠路由器,其特征在于,所述retransreport数据包处理模块的工作过程为:
(a)从retransreport数据包中提取dataid的集合记作新发现丢失的数据包dataid集合,当新发现丢失的数据包dataid大于0时,将所述新发现丢失的数据包dataid合并到当前路由器的上游路由器的retransreport数据包的dataid集合中,等待下一个到达数据包的dataid为-1;否则跳转执行步骤(d);
(b)对于每个存在于当前路由器的上游路由器的retransreport数据包的dataid集合中的数据包,如果所述数据包存在于等待下一个数据包达到的事件标识集合中,则将所述数据包从等待下一个数据包达到的事件标识集合和等待单个数据包重传反馈的retransreq事件标识集合中移除,并且计算等待下一个到达数据包的dataid更新为当前等待下一个到达数据包的dataid与到达数据包dataid的最大值;之后将到达数据包的dataid从等待批量重传的数据包dataid集合中移除掉;
(c)如果等待下一个到达数据包的dataid不等于-1,则赋值为自开始不在中的最小值,并计算等待下个数据包最大延迟;之后,该路由器开启一个定时计划任务事件,该任务延迟执行,如果所述计划任务事件被去除,则该计划任务事件终止执行;
(d)查询多路径转发状态表模块转发项中主路径上下一跳路由器的物理端口,并将该retransreport数据包从该物理端口转发出去。
5.根据权利要求1所述针对电网广域相位测量系统的弹性可靠路由器,其特征在于,所述基本数据包处理模块的工作过程为:
(1)如果该路由器是冗余子路径上的节点并且非主路径上的节点,则根据该数据包的路径标识、转发方向,在多路径转发状态表模块中查询到对应的转发项,如果转发项非空,则将该数据包打上transient标签,并从查询到转发项对应的物理端口发送出去;
(2)如果该数据包未标记transient标签,则将该数据包存储到内容存储队列中;
(3)如果该数据包不是多路径转发状态表模块转发项中主路径上转发的数据包,则根据该数据包的路径标识、转发方向,在本地的转发表中查询到对应的转发项,如果转发项非空,则将该数据包打上transient标签,并从查询到转发项对应的物理端口发送出去;
(4)如果该数据包的操作符是data,则调用data数据包处理模块;如果是retransreq,则调用retransreq数据包处理模块;如果是retransreport,则调用retransreport数据包处理模块。
6.根据权利要求1所述针对电网广域相位测量系统的弹性可靠路由器,其特征在于,所述内容存储队列模块的工作过程为:
(1)初始条件下,在本地初始化一个先进先出队列,队列中的每个单元大小不小于数据包大小的最大值;
(2)当有数据包存储请求时,将所述数据包推入到所述先进先出队列的末尾,如所述先进先出队列已满,则在此之前将所述先进先出队列头部元素去除;
(3)当有数据包dataid查询请求时,在所述先进先出队列中搜索与数据包dataid最为匹配的数据包dataid,并将匹配到的数据包返回给请求者;如果未查到,则返回空值。
7.根据权利要求1所述针对电网广域相位测量系统的弹性可靠路由器,其特征在于,所述多路径转发状态表模块由多条转发规则项和可靠弹性路由器子图标识对应的转发状态集合构成。
技术总结本发明公开了一种针对电网广域相位测量系统的弹性可靠路由器,该弹性可靠路由器括Data数据包处理模块、RetransReq数据包处理模块、RetransReport数据包处理模块、基本数据包处理模块、多路径转发状态表模块、内容存储队列模块和物理端口。本发明的弹性可靠路由器实现主动的丢失数据包检测,以及单一或批量重传机制,使得丢失数据包可直接从其途径的上游路由器进行网内直接恢复,改进了丢失数据包恢复时间成功率和高效性,保障电网广域相位测量通信系统的安全稳定运行。
技术研发人员:周伯阳
受保护的技术使用者:之江实验室
技术研发日:2021.02.03
技术公布日:2021.03.12