2.793

2018影响因子

(CJCR)

  • 中文核心
  • EI
  • 中国科技核心
  • Scopus
  • CSCD
  • 英国科学文摘

留言板

尊敬的读者、作者、审稿人, 关于本刊的投稿、审稿、编辑和出版的任何问题, 您可以本页添加留言。我们将尽快给您答复。谢谢您的支持!

姓名
邮箱
手机号码
标题
留言内容
验证码

一种基于UDP的电力广域保护系统可靠通信方法

袁凯 李俊娥 刘开培 陆秋余 倪明 罗剑波

袁凯, 李俊娥, 刘开培, 陆秋余, 倪明, 罗剑波. 一种基于UDP的电力广域保护系统可靠通信方法. 自动化学报, 2020, 41(x): 1−12. doi: 10.16383/j.aas.c180641
引用本文: 袁凯, 李俊娥, 刘开培, 陆秋余, 倪明, 罗剑波. 一种基于UDP的电力广域保护系统可靠通信方法. 自动化学报, 2020, 41(x): 1−12. doi: 10.16383/j.aas.c180641
Yuan Kai, Li Jun-e, Liu Kai-Pei, Lu Qiu-Yu, Ni Min, Luo Jian-Bo. A reliability communication approach for power wide area protection system based on UDP. Acta Automatica Sinica, 2020, 41(x): 1−12. doi: 10.16383/j.aas.c180641
Citation: Yuan Kai, Li Jun-e, Liu Kai-Pei, Lu Qiu-Yu, Ni Min, Luo Jian-Bo. A reliability communication approach for power wide area protection system based on UDP. Acta Automatica Sinica, 2020, 41(x): 1−12. doi: 10.16383/j.aas.c180641

一种基于UDP的电力广域保护系统可靠通信方法


DOI: 10.16383/j.aas.c180641
详细信息
    作者简介:

    武汉大学电气与自动化学院博士研究生. 主要研究方向包括智能电网通信QoS保障与可靠性分析.E-mail: yuankai890523@qq.com

    武汉大学国家网络安全学院/空天信息安全与可信计算教育部重点实验室教授. 2004年获得武汉大学计算机应用技术专业博士学位. 主要研究方向包括网络体系结构、网络安全、信息物理系统和电力工业控制安全. 本文通信作者.E-mail: jeli@whu.edu.cn

    武汉大学电气与自动化学院教授. 2001年获武汉大学计算机应用技术专业博士学位. 主要研究方向包括直流输电、可再生能源和智能电网、电能质量和数据分析.E-mail: kpliu@whu.edu.cn

    陆秋余 武汉大学国家网络安全学院硕士研究生. 主要研究方向包括智能电网通信QoS保障和网络安全. E-mail: 879556677@qq.com

    国电南瑞科技股份有限公司研究员级高工, 电网规划分析首席专家. 1996年获得东南大学电气工程博士学位. 主要研究方向包括信息物理电力系统(CPPSs)、电力系统安全稳定控制.E-mail: ni-ming@sgepri.sgcc.com.cn

    南瑞集团有限公司/国家电网电力科学研究院研究员级高工. 主要研究方向包括电网安全稳定分析、综合防御与控制.E-mail: luojianbo@sgepri.sgcc.com.cn

  • 基金项目:  国家自然科学基金(51977155, 51377122), 国家电网公司科技项目(针对网络攻击的电网信息物理系统协同运行态势感知与主动防御方法研究)资助

A Reliability Communication Approach for Power Wide Area Protection System Based on UDP

More Information
  • Fund Project:  Supported by National Natural Science Foundation of China (51977155, 51377122) and the Science and Technology Project of State Grid Corporation of China (Research on Cooperative Situation Awareness and Active Defense Method of Cyber Physical Power System for Cyber Attack)
  • 摘要: 电力广域保护系统从点到点通信逐步走向网络化通信, 如何在拥塞状态下保障业务的实时性和可靠性, 成为亟待解决的问题. 针对TCP不能保障实时性和UDP不能保障可靠性的问题, 本文提出一种联合应用层纠错、检错和重发机制的UDP传输方案, 在提供低时延传输服务的同时也能保障报文的可靠性. 考虑到算法的复杂性, 选择本原BCH码作为纠错编码算法, 设计了编码分组方法, 并通过实验验证了分组方法的正确性; 对增加纠错机制后的报文实时性进行了理论分析和仿真验证; 为了解决突发误码和丢包情况下的可靠性问题, 进一步设计了应用层检错和重发机制, 并分析了时延. 分析表明, 在应用层增加本文所设计的纠错、检错和重发机制后增加的时延几乎可以忽略不计. 最后给出了所提方法的联合应用算法并进行了可靠性分析, 结果表明本文方案的可靠性高于其他UDP传输方案.
  • 图  1  纠错算法实验程序流程图

    Fig.  1  Flow chart of the experiment program for error correction algorithm

    图  2  一个省级电力调度数据网络结构

    Fig.  2  The structure of a provincial power dispatch data network

    图  3  网络畅通时采用TCP和UDP的业务最大时延

    Fig.  3  Maximum delays of messages using TCP and UDP when the network is uncongested

    图  4  网络拥塞时采用TCP和UDP的业务最大时延

    Fig.  4  Maximum delays of messages using TCP and UDP when the network is congested

    图  5  网络畅通时TCP和UDP传输下报文端到端最大时延

    Fig.  5  Maximum end-to-end delays in TCP and UDP transmission modes when network is uncongested

    图  6  4种拥塞流量时TCP和UDP报文的端到端最大时延

    Fig.  6  Maximum End-to-end delay of TCP and UDP packets in four types of congestion traffic

    图  7  报文连续发送N次的总时延构成

    Fig.  7  Composition of the total delay when the message is transmitted N copies

    表  1  一种本原BCH码分组方法

    Table  1  A grouping method of original BCH code

    应用层报文长度(bytes) 分组数 (n,k) 每组加入的纠错码长度(bits) 每组纠错位数(bits) 总纠错位数(bits) 参考信道误比特数(bits)
    1-59 1 [511,493] 18 2 2 1
    60-115 4 [255,247] 8 1 4 1
    116-231 8 [255,247] 8 1 8 2
    232-462 16 [255,247] 8 1 16 4
    463-1400 64 [255,247] 8 1 64 12
    下载: 导出CSV

    表  2  本文方案与其它方案的对比

    Table  2  Comparison of the proposed scheme with the others

    通信方案 纠错 检错 重传 可靠性 实时性
    本文方案
    文献[16]方案
    文献[17]方案
    标准UDP传输方案
    下载: 导出CSV
  • [1] 严佳梅, 许剑冰, 倪明, 余文杰. 通信系统中断对电网广域保护控制系统的影响. 电力系统自动化, 2016, 40(5): 17−24 doi:  10.7500/AEPS20150820004

    Yan Jian-Mei, Xu Jian-Bing, Ni Ming, Yu Wen-Jie. Impact of communication system interruption on power system wide area protection and control system. Automation of Electric Power Systems, 2016, 40(5): 17−24 doi:  10.7500/AEPS20150820004
    [2] Shaohua Teng, Naiqi Wu, Haibin Zhu. SVM-DT-Based Adaptive and Collaborative Intrusion Detection. IEEE/CAA Journal of Automatica Sinica, 2018, 5(1): 108−118 doi:  10.1109/JAS.2017.7510730
    [3] 梅生伟, 朱建全. 智能电网中的若干数学与控制科学问题及其展望. 自动化学报, 2013, 39(2): 119−131 doi:  10.1016/S1874-1029(13)60014-2

    Mei Sheng-Wei, Zhu Jian-Quan. Mathematical and control scientic issues of smart grid and its prospects. Acta Automatica Sinica, 2013, 39(2): 119−131 doi:  10.1016/S1874-1029(13)60014-2
    [4] 杨飞生, 汪璟, 潘泉, 康沛沛. 网络攻击下信息物理融合电力系统的弹性事件触发控制. 自动化学报, 2019, 45(1): 110−119

    YANG Fei-Sheng, WANG Jing, PAN Quan, KANG Pei-Pei. Resilient Event-triggered Control of Grid Cyber-physical SystemsAgainst Cyber Attack. Acta Automatica Sinica, 2019, 45(1): 110−119
    [5] Nian Liu, Jianhua Zhang, Wenxia Liu. Toward Key Management for Communications of Wide Area Primary and Backup Protection. IEEE Transactions on Power Delivery, 2010, 25(3): 2030−2032 doi:  10.1109/TPWRD.2010.2045930
    [6] M. Begovic, D. Novosel, D. Karlsson, et al. Wide-Area Protection and Emergency Control. Proceedings of the IEEE, 2005, 93(5): 876−891 doi:  10.1109/JPROC.2005.847258
    [7] 汪剑, 韩蕾, 覃琴, 杜鑫. 广域保护通信网络综述. 电力系统通信, 2012, 33(240): 5−8

    Wang Jian, Han Lei, Qin Qin, Du Xin. Summary of wide-area protection communication network. Telecommunications for Electric Power System, 2012, 33(240): 5−8
    [8] 朱海婷, 丁伟, 缪丽华, 龚俭, 等. UDP流量对TCP往返延迟的影响. 通信学报, 2013, 34(1): 19−29

    Zhu Hai-Ting, Ding Wei, Miao Li-Hua, Gong Jian. Effect of UDP traffic on TCP’s round-trip delay. Journal on Communications, 2013, 34(1): 19−29
    [9] 罗万明, 林闯, 阎保平. TCP/IP拥塞控制研究. 计算机学报, 2001, 24(1): 1−17 doi:  10.3321/j.issn:0254-4164.2001.01.001

    Luo Wan-Ming, Lin Chuang, Yan Bao-Ping. A survey of congestion control in the internet. Chinese Journal of Computers, 2001, 24(1): 1−17 doi:  10.3321/j.issn:0254-4164.2001.01.001
    [10] Y. Serizawa, H. Imamura, M. Kiuchi. Performance evaluation of IP-based relay communications for wide-area protection employing external time synchronization. Proceeding of Power Engineering Society Summer Meeting, 2001, 2: 909−914
    [11] Jonathan William Stahlhut, Timothy James Browne, Gerald Thomas Heydt, et al. Latency Viewed as a Stochastic Process and its Impact on Wide Area Power System Control Signals. IEEE Trans on Power Systems, 2008, 23(1): 84−91 doi:  10.1109/TPWRS.2007.913210
    [12] 熊小萍. 电力系统广域通信网络可靠性分析与优化设计. 广西大学, 2014

    Ni Xiao-Ping. Reliability analysis and optimal design of wide area communication network in power system. Guangxi University, 2014
    [13] 王阳光. 应对灾变的广域保护信息处理及通信技术研究. 华中科技大学, 2010

    Wang Yang-Guang. Research on information Management and communication technology of wide area protection coping with power grid catastrophe. Huazhong University of Science and Technology, 2010
    [14] 邢宁哲. 智能电网中通信网络可靠性保障技术的研究. 北京交通大学, 2017

    Xing Ning-Zhe. Research on the guarantee technologies of communication networks reliability in smart grid. Beijing Jiaotong University, 2017
    [15] 董雪源. 基于互联网技术的电力系统广域保护通信体系研究. 西南交通大学, 2012

    Dong Xue-yuan. Studies on the internet technology based communication system in power system wide area protection. Southwest Jiaotong University, 2012
    [16] 范开俊, 徐丙垠, 陈羽, 韩国政, 逯怀东. 配电网分布式控制实时数据的GOOSE over UDP传输方式. 电力系统自动化, 2016, 40(4): 115−120 doi:  10.7500/AEPS20150615006

    Fan Kai-Jun, Xu Bing-Yin, Chen Yu, Han Guo-Zheng, Lu Huai-Dong. Goose over UDP transmission mode for real-time data of distributed control application in distribution networks. Automation of Electric Power Systems, 2016, 40(4): 115−120 doi:  10.7500/AEPS20150615006
    [17] 肖行诠, 苟骁毅, 肖岚, 李乐, 温丽丽, 段刚, 等. 基于UDP协议的局域网 WAMS数据低延迟可靠传输方法. 电力自动化设备, 2011, 31(10): 148−152 doi:  10.3969/j.issn.1006-6047.2011.10.031

    Xiao Xing-Quan, Gou Xiao-Yi, Xiao Lan, Li Le, Wen Li-Li, Duan Gang etc. UDP-based small-delay and reliable transfer of WAMS data in LAN. Electric Power Automation Equipment, 2011, 31(10): 148−152 doi:  10.3969/j.issn.1006-6047.2011.10.031
    [18] 张新昌, 张项安. 层次化保护控制系统及其网络通信技术研究. 电力系统保护与控制, 2014, 42(19): 129−133 doi:  10.7667/j.issn.1674-3415.2014.19.020

    Zhang Xin-Chang, Zhang Xiang-An. Research on hierarchical protection & control system and its communication technology. Power System Protection and Control, 2014, 42(19): 129−133 doi:  10.7667/j.issn.1674-3415.2014.19.020
    [19] 刘育权, 华煌圣, 李力, 王莉, 刘金生. 多层次的广域保护控制体系架构研究与实践. 电力系统保护与控制, 2015, 43(05): 112−122

    Liu Yu-Quan, Hua Huang-Sheng, Li Li, Wang Li, Liu Jin-Sheng. Research and application of multi-level wide-area protection system. Power System Protection and Control, 2015, 43(05): 112−122
    [20] 吴科成, 林湘宁, 鲁文军, 刘沛. 分层式电网区域保护系统的原理和实现. 电力系统自动化, 2007, 31(3): 72−78 doi:  10.3321/j.issn:1000-1026.2007.03.015

    Wu Ke-Cheng, Lin Xiang-Ning, Lu Wen-Jun, Liu Pei. Principle and realization of the hierarchical region protective system for power systems. Automation of Electric Power Systems, 2007, 31(3): 72−78 doi:  10.3321/j.issn:1000-1026.2007.03.015
    [21] Technical Brochure No. 187, CIGRE. System Protection Schemes in Power Networks, June, 2001.
    [22] 徐天奇, 尹项根, 游大海, 王阳光. 3层式广域保护系统通信网络. 电力系统自动化, 2008, 16(32): 28−33

    Xu Tian-Qi, Yin Xiang-Gen, You Da-Hai, Wang Yang-Guang. Communication network for three-level wide area protection system. Automation of Electric Power Systems, 2008, 16(32): 28−33
    [23] ADAMIAK M G, APOS TOLOV A P, BEGOVIC M M. Wide area protection: technology and infrastructures. IEEE Trans on Power Delivery, 2006, 21(2): 601−609 doi:  10.1109/TPWRD.2005.855481
    [24] 王新梅, 肖国镇. 纠错码—原理与方法. 西安电子科技大学出版社, 2001

    Wang Xin-Mei, Xiao Guo-Zhen. Error Correction Code: Principles and Methods. XiDian University Press, 2001
  • [1] 陈峰, 袁志明, 闫璐, 许伟, 苗义烽, 高博文. 高速铁路智能CTC自律机系统的可靠性与安全性评估[J]. 自动化学报, doi: 10.16383/j.aas.c190195
    [2] 喻勇, 司小胜, 胡昌华, 崔忠马, 李洪鹏. 数据驱动的可靠性评估与寿命预测研究进展:基于协变量的方法[J]. 自动化学报, doi: 10.16383/j.aas.2018.c170005
    [3] 岳元龙, 左信, 罗雄麟. 提高测量可靠性的多传感器数据融合有偏估计方法[J]. 自动化学报, doi: 10.3724/SP.J.1004.2014.01843
    [4] 赵辉, 严爱军, 王普. 提高案例推理分类器的可靠性研究[J]. 自动化学报, doi: 10.3724/SP.J.1004.2014.02029
    [5] 张亮, 黄曙光, 石昭祥. 一种基于拒识的高可靠性CAPTCHA识别算法[J]. 自动化学报, doi: 10.3724/SP.J.1004.2011.00891
    [6] 苏保河. 一类可修系统的可靠性指标和最成检测策略[J]. 自动化学报
    [7] 梅登华, 潘国梅. 系统的可靠性及其参数解分析[J]. 自动化学报
    [8] 疏松佳. 计算机综合制造系统(CIMS)可靠性及生产率的预计[J]. 自动化学报
    [9] 苏保河. 4状态可修系统的可靠性和检测策略研究[J]. 自动化学报
    [10] 李泉林, 田乃硕. 具有相型寿命的Clarke型CIMS生产线可靠性研究[J]. 自动化学报
    [11] 喻明, 王然, 吴澄. 一种提高制造系统运行可靠性的控制策略[J]. 自动化学报
    [12] 吴少敏, 万德钧, 黄仁. 不可"修复如新"的两相依部件的并联系统的可靠性分析[J]. 自动化学报
    [13] 谭民, 疏松桂, 张立龙. 考虑一类运行规则的两级生产线的可靠性分析[J]. 自动化学报
    [14] 史定华. 可修排队系统GI/G(M/G)/1的可靠性分析[J]. 自动化学报
    [15] 喻明, 吴澄, 方崇智. 计算机集成制造系统(CIMS)的可靠性建模与分析[J]. 自动化学报
    [16] 谭民, 疏松桂, 张立龙. CIMS生产线中缓冲区状态及可靠性分析[J]. 自动化学报
    [17] 廖炯生. n中取相邻k系统可靠性及街灯照明系统维修策略[J]. 自动化学报
    [18] 姚增起. 具有多种元件的N中取K容错系统及其可靠性[J]. 自动化学报
    [19] 姚增起. 用不可靠元件构造可靠系统及其神经网络实现[J]. 自动化学报
    [20] 姚增起. 一种新的系统可靠性模型[J]. 自动化学报
  • 加载中
计量
  • 文章访问数:  7
  • HTML全文浏览量:  2
  • 被引次数: 0
出版历程
  • 收稿日期:  2018-09-30
  • 录用日期:  2019-05-08

一种基于UDP的电力广域保护系统可靠通信方法

doi: 10.16383/j.aas.c180641
    基金项目:  国家自然科学基金(51977155, 51377122), 国家电网公司科技项目(针对网络攻击的电网信息物理系统协同运行态势感知与主动防御方法研究)资助
    作者简介:

    武汉大学电气与自动化学院博士研究生. 主要研究方向包括智能电网通信QoS保障与可靠性分析.E-mail: yuankai890523@qq.com

    武汉大学国家网络安全学院/空天信息安全与可信计算教育部重点实验室教授. 2004年获得武汉大学计算机应用技术专业博士学位. 主要研究方向包括网络体系结构、网络安全、信息物理系统和电力工业控制安全. 本文通信作者.E-mail: jeli@whu.edu.cn

    武汉大学电气与自动化学院教授. 2001年获武汉大学计算机应用技术专业博士学位. 主要研究方向包括直流输电、可再生能源和智能电网、电能质量和数据分析.E-mail: kpliu@whu.edu.cn

    陆秋余 武汉大学国家网络安全学院硕士研究生. 主要研究方向包括智能电网通信QoS保障和网络安全. E-mail: 879556677@qq.com

    国电南瑞科技股份有限公司研究员级高工, 电网规划分析首席专家. 1996年获得东南大学电气工程博士学位. 主要研究方向包括信息物理电力系统(CPPSs)、电力系统安全稳定控制.E-mail: ni-ming@sgepri.sgcc.com.cn

    南瑞集团有限公司/国家电网电力科学研究院研究员级高工. 主要研究方向包括电网安全稳定分析、综合防御与控制.E-mail: luojianbo@sgepri.sgcc.com.cn

摘要: 电力广域保护系统从点到点通信逐步走向网络化通信, 如何在拥塞状态下保障业务的实时性和可靠性, 成为亟待解决的问题. 针对TCP不能保障实时性和UDP不能保障可靠性的问题, 本文提出一种联合应用层纠错、检错和重发机制的UDP传输方案, 在提供低时延传输服务的同时也能保障报文的可靠性. 考虑到算法的复杂性, 选择本原BCH码作为纠错编码算法, 设计了编码分组方法, 并通过实验验证了分组方法的正确性; 对增加纠错机制后的报文实时性进行了理论分析和仿真验证; 为了解决突发误码和丢包情况下的可靠性问题, 进一步设计了应用层检错和重发机制, 并分析了时延. 分析表明, 在应用层增加本文所设计的纠错、检错和重发机制后增加的时延几乎可以忽略不计. 最后给出了所提方法的联合应用算法并进行了可靠性分析, 结果表明本文方案的可靠性高于其他UDP传输方案.

English Abstract

袁凯, 李俊娥, 刘开培, 陆秋余, 倪明, 罗剑波. 一种基于UDP的电力广域保护系统可靠通信方法. 自动化学报, 2020, 41(x): 1−12. doi: 10.16383/j.aas.c180641
引用本文: 袁凯, 李俊娥, 刘开培, 陆秋余, 倪明, 罗剑波. 一种基于UDP的电力广域保护系统可靠通信方法. 自动化学报, 2020, 41(x): 1−12. doi: 10.16383/j.aas.c180641
Yuan Kai, Li Jun-e, Liu Kai-Pei, Lu Qiu-Yu, Ni Min, Luo Jian-Bo. A reliability communication approach for power wide area protection system based on UDP. Acta Automatica Sinica, 2020, 41(x): 1−12. doi: 10.16383/j.aas.c180641
Citation: Yuan Kai, Li Jun-e, Liu Kai-Pei, Lu Qiu-Yu, Ni Min, Luo Jian-Bo. A reliability communication approach for power wide area protection system based on UDP. Acta Automatica Sinica, 2020, 41(x): 1−12. doi: 10.16383/j.aas.c180641
  • 电力广域保护系统的测量数据上传、执行报文下发以及各个区域之间的信息交换需要可靠与实时的通信保障[1-3], 否则可能导致执行单元发生拒动或者误动, 威胁电力系统的安全稳定运行[4-7]. 目前电网大多采用点对点的信息传输方式, 这种传输方式投资大, 不能适应大规模的广域保护系统应用需求. 采用基于TCP/IP协议的交换网实现互联电网的广域信息交换是未来电网保护与控制的必然发展趋势.

    广域保护与控制系统的通信范围广、通信距离长, 其通信网络受到攻击的可能性大, 容易出现拥塞状态. TCP通过确认与超时重传机制为应用程序提供可靠的传输服务, 但其拥塞控制机制可能导致报文时延增加. UDP没有拥塞控制机制, 不管网络拥塞与否, 都按照源站自身的能力以不变的速率发送报文, 且大量的UDP报文发送到信道上, 会进一步抑制TCP的发送速率, 从而具有信道资源抢占能力[8, 9].

    实时、可靠的通信系统是广域保护系统的基础[10, 11]. 传统的关于电力广域保护系统通信实时性与可靠性保障方法的研究, 主要采用优化网络拓扑结构、基于MPLS的流量工程[12, 13]与路由优化[12, 14]、针对不同优先级业务优化队列调度算法[15]、基于区分服务体系结构模型的服务质量保障[13, 15]等方法. 如果传输层仍然使用TCP协议, 这些方法并不能解决同一数据流路径上拥塞和出错重传带来的时延问题.

    有学者初步提出了基于UDP传输可靠性要求高的工业控制报文. 文献[16]提出了基于UDP传输协议的GOOSE报文广域互联实时通信, 但对可靠性保障只给出了应用层报文重传的机制和增加冗余信道的建议措施, 且存在如下不足: 所设计的报文重传时间间隔较大, 稳定状态时的重传时间间隔为小于60 s, 可选20 s, 不能保证报文丢失或出错时的业务实时性, 虽然事件发生后缩短了重传间隔, 但多次重传仍然会超时; 冗余信道将极大增加投资成本, 且不能避免攻击引发的报文丢失和出错问题. 文献[17]提出基于UDP协议传输局域网WAMS数据和在应用层增加重发机制和实时插值机制来保障UDP传输可靠性的策略, 但是, 其重传是基于数据缺失检查和请求应答机制实现的, 和TCP类似, 多次重传会导致时延超出实时性要求; 而实时插值机制针对PMU数据特点提出, 并不适用于所有的应用. 总之, 上述文献均未很好解决使用UDP传输时通信业务的可靠性保障问题. 目前为止, 未见将纠错、检错和重发机制联合用于实际通信的研究.

    电力广域保护控制通信体系依照分层分布的设计原则进行构建[18-20]. 广域保护系统的业务报文主要包括两大类: 测量数据上传报文和控制命令下发报文. 广域保护与控制系统的动作时间(测量数据上传和控制命令下发的动作时延)范围在100 ms到100 s之间, 具体时延要求与业务类型、电网规模、元件位置有关[21]. 以失步保护为例, 其测量数据上传和控制命令下发的通信时延之和不能超过370 ms[22, 23].

    本文针对TCP不能保障实时性而UDP不能保障可靠性的问题, 提出一种基于UDP传输的应用层纠错、检错和重发机制, 以保障电力控制报文实时性与可靠性, 为广域保护与控制系统走向IP网络通信提供参考.

    • 考虑到计算复杂性, 在应用层报文中加入的纠错机制采用线性分组码.

    • 为保证使用UDP传输时的可靠性, 在设计纠错码时, 应考虑信道的误码率, 即使用的纠错算法和在应用层报文中加入的纠错码, 其纠错能力应大于信道的误码率.

      (1)分组码的校验元长度约束条件

      两个等长字符串对应位置的不同字符的个数, 称为码元距离, 也称汉明距, 记为 $d$ . 各个码字间距离的最小值称为最小码距, 记为 $ {d}_{0} $ , 是衡量码组检错和纠错能力的依据. 分组码的纠错或检错能力如下[24]:

      为检测 $ e $ 个错码, 要求最小码距为:

      $$ {d}_{0}\ge e+1 $$ (1)

      为纠正 $t$ 个错码, 要求最小码距为:

      $$ {d}_{0}\ge 2t+1 $$ (2)

      为纠正 $ t $ 个错码, 同时检测 $ e $ 个错码, 要求最小码距为:

      $$ {d}_{0}\ge e+t+1\;(e>t) $$ (3)

      当采用线性分组码时, 每一组的校验元长度 $ r $ [24]:

      $$ r\ge {d}_{0}-1 $$ (4)

      (2)考虑信道误码率的纠错码理论长度

      假设应用层报文的长度字节数为 $ \mu $ , 信道误码率为 $ \lambda $ , 设编码时将报文分为 $ N $ 组, 假定分组后每组报文长度为整数, 则每组需要纠正的最大比特位数 $ t $ 为:

      $$ t=8(\mu /N)\lambda $$ (5)

      根据公式(2)和(4), 则加入的纠错码长度 $ \delta $ 为:

      $$ \delta \ge 2tN $$ (6)
    • 定义1: 分组码是把信源输出的信息序列, 以 $ k $ 个码元划分为一段, 通过编码器为这 $ k $ 个信息元按一定规则产生 $r$ 个校验(监督)元, 则输出码长为 $ n=k+r $ 的一个码组, 表示为 $ (n,k) $ . 每一码组的校验元仅与本组的信息元有关, 而与其它组无关[24].

      定义2: 当码长为 $ n $ 的分组码中的 $ r $ 个校验元是由 $ k $ 个信元的线性组合来表达时, 则该分组码称为线性分组码[24].

      线性分组码主要包括汉明码和BCH码. 汉明码只能纠正一位错误, BCH码能够纠正多位错误. BCH是迄今为止所发现的一种较好的线性纠错码类, 它的纠错能力非常强, 特别在短和中等码长下, 其纠错性能几乎接近理论值. BCH码中, 当码长 $ n={2}^{m}-1 $ ( $ m $ 为正整数)时, 称为本原BCH码. 这一类编码简单, 计算效率高[24].

      定理1[24]: 对任意正整数 $ m $ $ t ,$ 一定存在一个二进制BCH码, 它以 $\beta , {\beta }^{2},\cdots,{\beta }^{2t-1} $ 为根, 其码长 $ n={2}^{m}-1 $ 或是 $ {2}^{m}-1 $ 的因子, 能纠正 $ t $ 个随机错误, 校验位数目至多为 $ mt $ 个.

    • 定义本原BCH编码的发送端的码字矩阵为 $ {{C}}_{n}=\left[{c}_{n-1},{c}_{n-2},{c}_{n-3},\cdots,{c}_{1},{c}_{0}\right] ,$ 码字的前 $k$ 位为信息位, 后 $r$ 位为校验位(监督位). 因此, 信息元矩阵 $ {{C}}_{k}=\left[{c}_{n-1},{c}_{n-2},{c}_{n-3},\cdots,{c}_{n-k+1},{c}_{n-k}\right] ,$ 校验元矩阵 $ {{C}}_{r}=\left[{c}_{n-k-1},{c}_{n-k-2},{c}_{n-k-3},\cdots,{c}_{1},{c}_{0}\right]. $ 译码器收到的码字矩阵为 ${w}=[{w}_{n-1},{w}_{n-2}, {w}_{n-3},\cdots,$ ${w}_{1},{w}_{0}],$ 信息在传输时发生随机错误, 假定错误矩阵为 $ {e}=[{e}_{n-1},{e}_{n-2},\cdots ,{e}_{1},{e}_{0}] ,$ $ {w}={{C}}_{n}+{e} .$

      (1)本原BCH码的编码规则

      步骤1: 对于 $ (n,k) $ 分组码, 其生成多项式 $g(x) = {g_0} + x{g_1} + {x^2}{g_2} + \cdots {x^{n - k - 1}}{g_{n - k - 1}} + {x^{n - k}}{g_{n - k}}$ $ {x}^{n}-1 $ 因式分解得到, 即 $ {x}^{n}-1=g\left(x\right)h\left(x\right) $ , 则生成矩阵 $ {G} $ [24]:

      $${\bf{G}} \!=\! \!\left[\!\!\! {\begin{array}{*{20}{c}} {{g_{n - k}}}\!&\!{{g_{n - k - 1}}}\!&\! \cdots \!&\!{{g_1}}\!&\!{{g_0}}\!&\!0\!&\! \cdots \!&\!0 \\ 0\!&\!{{g_{n - k}}}\!&\! \cdots \!&\!{{g_2}}\!&\!{{g_1}}\!&\!{{g_0}}\!&\! \cdots \!&\!0 \\ \vdots \!&\! \vdots \!&\! \vdots \!&\! \vdots \!&\! \vdots \!&\! \vdots \!&\! \vdots \!&\! \vdots \\ 0\!&\!0\!&\!0\!&\!{{g_{n - k}}}\!&\!{{g_{n - k - 1}}}\!&\! \cdots \!&\!{{g_1}}\!&\!{{g_0}} \end{array}} \!\!\!\right]$$

      步骤2: 对于本原BCH码, 有 $ {G}{{H}}^{T}=0 $ . 由此可以得到校验矩阵 ${\bf{H}}$ [24]:

      $$ {\bf{H}} \!=\! \left[\!\!\! {\begin{array}{*{20}{c}} {{h_{1,n - 1}}}\!\!&\!\!{{h_{1,n - 2}}}\!\!&\!\! \ldots \!\!&\!\!{{h_{1,n - k}}}\!\!&\!\!1\!\!&\!\!0\!\!&\!\! \ldots \!\!&\!\!0\!\!&\!\!0 \\ {{h_{2,n - 1}}}\!\!&\!\!{{h_{2,n - 2}}}\!\!&\!\! \ldots \!\!&\!\!{{h_{2,n - k}}}\!\!&\!\!0\!\!&\!\!1\!\!&\!\! \ldots \!\!&\!\!0\!\!&\!\!0 \\ \vdots \!\!&\!\! \vdots \!\!&\!\! \ddots \!\!&\!\! \vdots \!\!&\!\! \vdots \!\!&\!\! \vdots \!\!&\!\! \ddots \!\!&\!\! \vdots \!\!&\!\! \vdots \\ {{h_{r - 1,n - 1}}}\!\!&\!\!{{h_{r - 1,n - 2}}}\!\!&\!\! \ldots \!\!&\!\!{{h_{r - 1,n - k}}}\!\!&\!\!0\!\!&\!\!0\!\!&\!\! \ldots \!\!&\!\!1\!\!&\!\!0 \\ {{h_{r,n - 1}}}\!\!&\!\!{{h_{r,n - 2}}}\!\!&\!\! \ldots \!\!&\!\!{{h_{r,n - k}}}\!\!&\!\!0\!\!&\!\!0\!\!&\!\! \ldots \!\!&\!\!0\!\!&\!\!1 \end{array}} \!\!\!\right] $$

      步骤3: 由本原BCH码的性质可知 $ {H}{{{C}}_{n}}^{T}=0, $ [24]:

      $$\begin{split} &\left[\!\!\!\!\!\!\!{\begin{array}{*{20}{c}} {{h_{1,n - 1}}}\!\!\!\!&\!\!\!\!{{h_{1,n - 2}}}\!\!\!\!&\!\!\!\!\!\! \ldots\!\! \!\!\!\!&\!\!\!\!{{h_{1,n - k}}}\!\!\!\!&\!\!\!\!1\!\!\!\!&\!\!\!\!0\!\!\!\!&\!\!\!\!\!\! \ldots \!\!\!\!\!\!&\!\!\!\!0\!\!\!\!&\!\!\!\!0 \\ {{h_{2,n - 1}}}\!\!\!\!&\!\!\!\!{{h_{2,n - 2}}}\!\!\!\!&\!\!\!\!\!\! \ldots \!\!\!\!\!\!&\!\!\!\!{{h_{2,n - k}}}\!\!\!\!&\!\!\!\!0\!\!\!\!&\!\!\!\!1\!\!\!\!&\!\!\!\!\!\! \ldots \!\!\!\!\!\!&\!\!\!\!0\!\!\!\!&\!\!\!\!0 \\ \vdots \!\!\!\!&\!\!\!\! \vdots \!\!\!\!&\!\!\!\!\!\! \ddots\!\! \!\!\!\!&\!\!\!\! \vdots \!\!\!\!&\!\!\!\! \vdots \!\!\!\!&\!\!\!\! \vdots \!\!\!\!&\!\!\!\! \!\!\ddots \!\!\!\!\!\!&\!\!\!\! \vdots \!\!\!\!&\!\!\!\! \vdots \\ \begin{array}{l} {h_{r - 2,n - 1}} \\ {h_{r - 1,n - 1}} \\ \end{array} \!\!\!\!&\!\!\!\!\begin{array}{l} {h_{r - 2,n - 2}} \\ {h_{r - 1,n - 2}} \\ \end{array} \!\!\!\!&\!\!\!\!\!\!\begin{array}{l} \cdots \\ \ldots \\ \end{array} \!\!\!\!\!\!&\!\!\!\!\begin{array}{l} {\rm{ }}{h_{r - 2,n - k}} \\ {h_{r - 1,n - k}} \\ \end{array} \!\!\!\!&\!\!\!\!\begin{array}{l} 0 \\ 0 \\ \end{array} \!\!\!\!&\!\!\!\!\begin{array}{l} 0 \\ 0 \\ \end{array} \!\!\!\!&\!\!\!\!\!\!\begin{array}{l} \ldots \\ \ldots \\ \end{array} \!\!\!\!\!\!&\!\!\!\!\begin{array}{l} 0 \\ 1 \\ \end{array} \!\!\!\!&\!\!\!\!\begin{array}{l} 0 \\ 0 \\ \end{array} \\ {{h_{r,n - 1}}}\!\!\!\!&\!\!\!\!{{h_{r,n - 2}}}\!\!\!\!&\!\!\!\! \ldots \!\!\!\!&\!\!\!\!{{h_{r,n - k}}}\!\!\!\!&\!\!\!\!0\!\!\!\!&\!\!\!\!0\!\!\!\!&\!\!\!\! \ldots \!\!\!\!&\!\!\!\!0\!\!\!\!&\!\!\!\!1 \end{array}}\!\!\!\!\! \right]\\ &\left[ {\begin{array}{*{20}{c}} {{c_{n - 1}}} \\ \vdots \\ {{c_{n - k}}} \\ {{c_{n - k - 1}}} \\ \vdots \\ {{c_0}} \end{array}} \right] = {\bf{0}} \end{split} $$

      由于信息元 $ {c}_{n-1}\sim {c}_{n-k} $ 已知, 则加入的校验元 $ {c}_{n-k-1}\sim {c}_{0} $ 可以通过上述公式得到. 即

      $$\begin{split}{{\bf{C}}_r}^{\bf{T}} =& \left[ {\begin{array}{*{20}{c}} {{c_{n - k - 1}}} \\ \vdots \\ {{c_0}} \end{array}} \right] = \\ &\left[ \!\!\!\!{\begin{array}{*{20}{c}} {{h_{1,n - 1}}}\!\!&\!\!{{h_{1,n - 2}}}\!\!&\!\! \cdots\!\! &\!\!{{h_{1,n - k}}} \\ {{h_{2,n - 1}}}\!\!&\!\!{{h_{2,n - 2}}}\!\!& \!\!\cdots\!\! &\!\!{{h_{2,n - k}}} \\ \vdots \!\!&\!\! \vdots\!\! &\!\! \ddots \!\!& \!\!\vdots \\ {{h_{r - 2,n - 1}}}\!\!&\!\!{{h_{r - 2,n - 2}}}\!\!&\!\! \cdots \!\!&\!\!{{h_{r - 2,n - k}}} \\ {{h_{r - 1,n - 1}}}\!\!&\!\!{{h_{r - 1,n - 2}}}\!\!&\!\! \cdots \!\!&\!\!{{h_{r - 1,n - k}}} \\ {{h_{r,n - 1}}}\!\!&\!\!{{h_{r,n - 2}}}\!\!&\!\! \cdots \!\!&\!\!{{h_{r,n - k}}} \end{array}} \!\!\!\!\right]\left[ {\begin{array}{*{20}{c}} {{c_{n - 1}}} \\ \vdots \\ {{c_{n - k}}} \end{array}} \right]\end{split}$$

      (2)本原BCH码的译码规则

      步骤1: 根据码长 $ n $ 和信息元长度 $ k $ 计算校验矩阵 $ {H} $ .

      步骤2: 计算矩阵 $ {w} $ 的伴随矩阵 $ {S}={w}{{H}}^{T} $ .

      步骤3: 由于 ${{S}} = {{w}}{{{H}}^T} = \left( {{{{C}}_n} + {{e}}} \right){{{H}}^T} = {{e}}{{{H}}^T},$ 可以估计错误矩阵 $\hat {{e}}.$

      步骤4: 译码器输出的估计码字 ${\hat {{C}}_n} = {{w}} - \hat {{e}}.$

    • 假设本原BCH编码用二进制数实现, 通过分析本原BCH码的编译码过程, 可以计算编译码的时间, 编码和译码的移位运算次数分别为 $ kr $ $ n{{log}}_{2}n $ [24], 当采用硬件进行编译码时, 一次移位运算的时间非常短, 此时编译码的时间基本可以忽略不计.

      对应用层报文进行分组和纠错码长度计算时需要考虑如下问题:

      1)本原BCH码的性能在码长小于等于1023比特时较好, 特别在短码时纠错性能更好, 随着码长的增加, 纠错性能变坏. 因此, 为了有较好的纠错性能, 分组后每组码长应不超过1023比特[24].

      2)根据信道的误码率和应用层报文长度可以计算信道的误比特数. 因此, 为了保障信息在传输过程中的可靠性, 必须满足整个编码的纠错位数大于或者等于报文在信道传输过程中的误比特数.

      3)当原始的数据长度不满足本原BCH码编码规则时, 需要用零补齐.

      假设光纤的误码率为 $ 1\times 1{0}^{-3} $ 时, 可以确定本原BCH码分组规则如表1所示.

      表 1  一种本原BCH码分组方法

      Table 1.  A grouping method of original BCH code

      应用层报文长度(bytes) 分组数 (n,k) 每组加入的纠错码长度(bits) 每组纠错位数(bits) 总纠错位数(bits) 参考信道误比特数(bits)
      1-59 1 [511,493] 18 2 2 1
      60-115 4 [255,247] 8 1 4 1
      116-231 8 [255,247] 8 1 8 2
      232-462 16 [255,247] 8 1 16 4
      463-1400 64 [255,247] 8 1 64 12
    • 设有数据D, 长度为200字节.

      依据表1, 应当将数据分成 $ N=8 $ 组, 每组信息元长度为 $ k=200\times 8/8=200 $ 位, 数据 $ {D}=[{{d}}_{1}, $ $ {{d}}_{2},\cdots,{{d}}_{8}] ,$ 其中每一组信息元 $ {{d}}_{i} $ 为1×200的矩阵:

      $$ {{d}}_{i}=\left({d}_{ij}\right) (j=\mathrm{1,2},\cdots,200) $$

      其中, $ {d}_{ij}=0{\text{或}}1 .$

      根据定理1, 本原BCH码的码长必须为 $ {2}^{m}-1 $ ( $m$ 为正整数), 因此, 对于200比特的信息元, 编码后的码长应为 $ n=255 ,$ 若期望纠错能力 $ t=1 ,$ 则校验元长度 $ r=mt=8 ,$ 信息元长度 $ {k}'=247 .$ 因此需要对原始数据 $ {{d}}_{i} $ 进行补零, 补零的长度为 ${k}''={k}'- $ $ k=47, $ 则补零后的数据 $ {{D}}'=[{{d}}_{1}',{{d}}_{2}',\cdots,{{d}}_{8}'] ,$ 每一组信息元 $ {{d}}_{i}' $ 为1×247的矩阵:

      $$ {{d}}_{i}'=\left({d}_{ij}'\right) (j=\mathrm{1,2},\cdots,247) $$

      其中, ${d}_{ij}'=\left\{\begin{aligned} 0{\text{或}}1(j=\mathrm{1,2},\cdots ,200)\\ 0(j=\mathrm{201,202},\cdots ,247)\end{aligned}\right.$

      每一组校验元矩阵 $ {{C}}_{{{r}}_{i}} $ :

      $$ {{C}}_{{{r}}_{i}}=\left({C}_{{r}_{ij}}\right) (j=\mathrm{1,2},\cdots,8) $$

      其中, $ {C}_{{r}_{ij}}=0{\text{或}}1 .$

      应用层报文为 $ [{{D}}',{{C}}_{{r}_{1}},{{C}}_{{r}_{2}},\cdots,{{C}}_{{r}_{8}}]. $ 为了减小传输数据量, 在报文传输时将补入的零去掉, 则应用层数据的最终输出码组为 $ [{D},{{C}}_{{r}_{1}},{{C}}_{{r}_{2}},\cdots,{{C}}_{{r}_{8}}]. $

      设接收端收到的信息为矩阵 $[{{D}}'',{{C}}_{{r}_{1}}', {{C}}_{{r}_{2}}',\cdots,$ ${{C}}_{{r}_{8}}'] .$ 其中 $ {{D}}''=[{{d}}_{1}'',{{d}}_{2}'',\cdots,{{d}}_{8}''], $ 每一组信息元 $ {{d}}_{i}'' $ 为1×200的矩阵:

      $$ {{d}}_{i}''=\left({d}_{ij}''\right) (j=\mathrm{1,2},\cdots,200) $$

      并将 $ {{d}}_{i}'' $ 的每一组用零补齐到247位, 得到对应组的译码前每组信息矩阵 $ {{d}}_{i}'' $ 为1×247的矩阵:

      $$ {{d}}_{i}'''=\left({d}_{ij}'''\right) (j=\mathrm{1,2},\cdots,247) $$

      其中, $ {d}_{ij}'''=\left\{\begin{aligned}{d}_{ij}''(j=\mathrm{1,2},\cdots,200)\quad\\ 0(j=\mathrm{201,202},\cdots,247)\end{aligned}\right. $

      接收端的码字矩阵 ${{c}}_{i}\!=\![{{d}}_{i}''',{{C}}_{{r}_{i}}'] (i=\mathrm{1,2},\cdots,8),$ $ {{c}}_{i} $ 为1×255的矩阵.

      按照本原BCH码译码规则对 $ {{c}}_{i} $ 进行译码, 得到对应组的错误图样 $ {{e}}_{i}, $ 则译码后码字 $ { {\tilde{c}}}_{i}={{c}}_{i}-{{e}}_{i} .$

      $ { {\tilde{c}}}_{j} $ 的前200位, 记为 $ {{\widehat{c}}}_{j}, $ 按序排列, 即得到正确数据 $ {D}=[{{\widehat{c}}}_{1}, {{\widehat{c}}}_{2}\cdots{{\widehat{c}}}_{N}] $ .

    • 为了验证上述编译码规则和分组规则的正确性, 进行了编程实现, 实验程序流程如图1所示, 实验程序伪代码见附录1. 对应表1, 分别选取应用层报文长度为1、30、59、60、80、115、116、160、231、232、320、462、463、800、1400字节作为实验程序的输入, 实验结果表明对所有选取的报文长度均能准确地进行BCH编码和译码, 且当信道随机错误小于纠错码的纠错能力时, 都可以得到纠正, 即能得到正确的原始报文信息.

      图  1  纠错算法实验程序流程图

      Figure 1.  Flow chart of the experiment program for error correction algorithm

      为了进一步验证纠错码的纠错能力, 对相同长度的应用层报文加入不同的错误图样进行了实验. 应用层报文长度取200个字节、加入1位错误时的实验结果见附录2, 表明当信道随机错误小于纠错码的纠错能力时, 信道误码可以得到纠正. 应用层报文长度取200个字节、加入2位错误时的实验结果见附录3, 表明当信道随机错误大于纠错码的纠错能力时, 信道误码不能得到纠正.

    • 应用层加入纠错机制后, 对通信业务的端到端时延影响主要有如下两个方面: 1)加入的纠错码会增加报文的长度, 从而增加报文的发送时延; 2)纠错码的编码和译码会增加发送端和接收端的处理时延.

    • 假设通信报文纠错码的字节数为 $ \delta , $ 通信网络的发送速率为 $ M ,$ 报文的发送时延为 $ \tau , $ 则单个节点增加的报文发送时延为:

      $$ \tau =\frac{8\delta }{M} $$ (7)

      编码和译码的时延与其编译算法复杂度和编译器的处理器速率等因素有关. 假定算法复杂度和处理器确定的情况下, 编码和译码的时延分别为 $ {T}_{1} $ $ {T}_{2} $ , 编码和译码的总时延 $ T $ 为:

      $$ T={T}_{1}+{T}_{2} $$ (8)
    • (1)增加的发送时延

      为了比较可能增加的最大通信时延, 应用层报文的长度取256字节. 依据表1, 采用应用层纠错和UDP方案时, 传输层的报文长度为256+16+8=280 Bytes, 其中16字节是增加的纠错码长度, 8字节是UDP报文首部长度; 采用TCP传输方案(无应用层纠错)时, 传输层的报文长度大于等于256+20=276 Bytes, 其中20为TCP报文的固定首部长度. 可见, 传输时延在单个节点最多增加 $\tau $ =(280-276)*8/M=32/M, M为链路的发送速率, 取M=100 Mbps时, $\tau $ =32/100M=0.32 $ \mu s .$ 电力控制报文的转发跳数不可能多, 一个省级调度数据网的报文转发跳数通常是3-4跳, 以5跳计算, 增加的总发送时延为0.32*5=1.6 $ \mu s, $ 仍然非常小, 几乎可以忽略不计.

      (2)增加的编译码时延

      应用层纠错码的编译码只发生在源端和目的端, 即通信过程中只增加一次编码时延和一次译码时延. 当采用硬件进行编译码时, 编译码的时间基本可以忽略不计.

    • (1)未增加纠错机制的报文端到端时延

      为了验证TCP和UDP对应用层业务报文实时性的影响, 下面我们以图2所示的某省级电力调度数据网为例仿真TCP和UDP传输方式下的端到端最大时延. 假设其由省调双核心、备调双备份和10个地调组成, 其主网是4个155/1000M环型链的双归网络.

      图  2  一个省级电力调度数据网络结构

      Figure 2.  The structure of a provincial power dispatch data network

      以测量数据报文上传业务为例. 综合各类文献, 取测量数据的应用层报文长度为典型值256字节, 测量数据上传的频率为50 Hz, 即测量设备以20 ms的间隔持续向控制中心发送测量数据.

      设定网络畅通和拥塞两种情况, 仿真传输层分别使用TCP和UDP时, 统计相应的测量数据报文上传端到端的最大时延, 结果如图3图4所示. 从图中可以看出, 在网络正常情况下, TCP和UDP传输方式下的业务时延相差不大, 都能够满足实时性要求. 但在网络拥塞状况下, 采用TCP时, 随着仿真时间的增加, 时延急剧增加, 达到数秒甚至十余秒(第5分钟时达到40 s), 不能满足大部分广域保护业务的实时性需求; 而UDP传输方式下, 业务最大时延稳定在80 ms左右, 能满足大部分广域保护业务的实时性需求.

      图  3  网络畅通时采用TCP和UDP的业务最大时延

      Figure 3.  Maximum delays of messages using TCP and UDP when the network is uncongested

      图  4  网络拥塞时采用TCP和UDP的业务最大时延

      Figure 4.  Maximum delays of messages using TCP and UDP when the network is congested

      (2)增加纠错机制后的报文端到端时延

      为了验证采用本文纠错方案后报文的端到端时延是否满足电力业务的实时性要求, 本文根据上文设计的BCH编码算法参数进行了仿真, 且为便于比较分析, 仍以图2所示的某省电力调度数据网络为例, 网络状况也分为畅通和拥塞两种情况.

      仿真中, 增加纠错码后报文长度变化增加的发送时延已通过设定报文大小而包含在仿真结果中, 由于编译码时间可以忽略, 仿真的端到端时延就是采用应用层纠错和UDP传输方案的总时延.

      仿真方法及参数设置前文类似, 不同之处仅仅是UDP传输时因增加了应用层纠错机制而增加了报文长度. 应用层报文的长度仍取256字节, 则TCP报文的数据区长度为256字节, UDP报文的数据区由于加入16个字节的纠错码, 其长度为272字节.

      网络畅通时, 报文的端到端时延如图5所示. 网络畅通时, UDP传输方式下报文端到端时延和TCP传输方案相当, 报文时延在1.3 ms左右, 远远小于广域保护测量数据上传和控制命令下发所要求的时延100 ms.

      图  5  网络畅通时TCP和UDP传输下报文端到端最大时延

      Figure 5.  Maximum end-to-end delays in TCP and UDP transmission modes when network is uncongested

      为了观察不同拥塞程度下的通信时延, 对带宽为155 Mbps的链路, 分别仿真拥塞流量为156 Mbps、168 Mbps、180 Mbps以及192 Mbps时TCP传输方式和UDP传输方式的端到端时延, 结果如图6所示. 可见, TCP传输方式下的端到端时延随着拥塞程度加重越来越大, 延时在1 s-40 s之间, 不满足广域保护控制系统的实时性要求; 而UDP传输方式下报文的端到端时延跟网络拥塞程度几乎无关, 其时延稳定在80 ms左右, 远小于TCP传输方式, 仍满足广域保护系统中对测量数据报文传输时延的要求.

      图  6  4种拥塞流量时TCP和UDP报文的端到端最大时延

      Figure 6.  Maximum End-to-end delay of TCP and UDP packets in four types of congestion traffic

      UDP传输方式中加入了纠错码, 能够确保报文在传输过程中具有高可靠性, 避免了出错重传引起的时延抖动.

    • UDP传输方式下在应用层报文中加入纠错码, 只能保障报文在传输过程中出现随机错误情况下的可靠传输, 且其可靠性与纠错码的纠错能力相关, 而当错误位较多或突发性误码率高而超出纠错码能力、或整个报文丢失时, 报文的可靠性则无法保证. 为此下面研究: 1)对于报文到达了接收端, 为了进一步提高报文的可靠性, 在应用层报文中增加检错机制; 2)为防止报文在传输过程中丢失, 报文的重发机制.

    • 在应用层增加检错机制的目的, 是判断接收端经过纠错算法译码后的信息是否为正确的数据. 因此, 本文将检错范围设计为包括信息元和纠错码两者.

      设检错编码算法为 $ f $ , 则在发送端和接收端的检错码编码和译码策略分别如式(9)和式(10).

      $$ {C}_{s}=f({C}_{k},{C}_{r}) $$ (9)

      式中, $ {C}_{s} $ 为发送端检错码, $ {C}_{k} $ 为发送端信息元, $ {C}_{r} $ 为发送端纠错码.

      $$ {C}_{R}={f}^{T}({C}_{k}',{C}_{r}') $$ (10)

      式中, $ {C}_{R} $ 为接收端检错码, $ {C}_{k}' $ 为译码后的信息元, $ {C}_{r}' $ 为译码后的纠错码.

      如果 $ {C}_{s} $ $ {C}_{R} $ 相同, 则认为纠错码纠正了错误, 否则认为纠错失败.

      本文建议采用与TCP校验和相同的算法进行检错. 则检错码的长度为2字节, 几乎不增加发送时延. 同时, 由于TCP校验和计算简单, 处理时延也可以忽略不计. 实际中, 在应用层纠错方案中, 由于UDP校验和需要禁用, 减少了UDP计算校验和的时间, 从而在应用层增加这种检错机制并不会增加时延.

      这样, 在报文到达接收端的情况下, 其可靠性远大于TCP传输方案. 但是仍不能解决报文丢失情况下的可靠性问题, 因此, 本文引入下节将讨论的重发机制来解决这一问题.

    • 为了避免报文丢失, 可以在广域保护系统中采用将同一报文连续重复发送多次的策略.

      电力通信网络为专用网络, 相对互联网来说, 其通信量远远小于信道的容量, 且具有可预见性, 因此, 重复发送报文虽然增加了通信量, 但是可以根据信道容量控制重发次数来避免引起网络拥塞, 还可以在网络规划时就考虑到重发报文增加的带宽需求.

      广域保护与控制系统的动作时延组成如公式(11)所示.

      $$ {T}_{G}={T}_{s}+{T}_{e}+{T}_{ce}+{T}_{cr}+{T}_{j} $$ (11)

      式中, $ {T}_{G} $ 为广域保护与控制系统总时延, $ {T}_{s} $ 为设备发送时延, $ {T}_{e} $ 为发送间隔时延, $ {T}_{ce} $ 为测量数据上传通信时延, $ {T}_{cr} $ 为控制命令下发通信时延, $ {T}_{j} $ 为控制命令决策时延. 其中通信时延与网络传输协议、网络状态和网络结构有关.

      在UDP传输方式下, 将报文连续发送N次, 不需要等待接收端的确认, 报文之间的时间间隔只受发送端处理能力和发送能力的限制. 最坏情况下(前N-1个报文都丢失、只有最后一个报文到达), 报文的端到端时延为第一个报文生成到最后一个报文在接收端译码完成的总时延, 如图7所示, 即:

      图  7  报文连续发送N次的总时延构成

      Figure 7.  Composition of the total delay when the message is transmitted N copies

      $$ {T}_{UDP}={T}_{a}+(N-1){T}_{b}+(N-1){T}_{c} $$ (12)

      式中, $ {T}_{UDP} $ 为UDP传输时应用层报文总时延, $ {T}_{a} $ 为单个报文的端到端时延(含编译码处理时延、发送时延和链路传播时延), $ {T}_{b} $ 为帧间间隔, $ {T}_{c} $ 为单个报文的发送时延, N为报文的发送次数.

      TCP协议为了保障报文的可靠性, 具有超时重传的机制. 假设TCP报文重传N-1次, 相当于报文发送了N次. TCP报文的时延由超时重传时间和报文的传输时延构成, 即:

      $$ {T}_{TCP}={T}_{d}+(N-1){T}_{RTO}+(N-1){T}_{c} $$ (13)

      式中, $ {T}_{TCP} $ 为TCP传输时应用层报文的总时延, $ {T}_{d} $ 为单个报文的端到端时延(含发送时延和链路传播时延), $ {T}_{RTO} $ 为超时重传时间, $ {T}_{c} $ 为单个报文的发送时延.

      TCP报文为了实现超时重传, 在每发送完一个分组设置一个超时计时器, 超时计时器的数值就是超时重传时间. TCP超时重传时间为加权平均往返时间, 是一个动态值, 通常会比数据在网络中传输的平均往返时间略长一些, 即通常 $ {T}_{RTO}>2{T}_{d}, $ 为了简化计算, 我们取 $ {T}_{RTO}=3{T}_{d} .$ 由于已经发出的分组数据会经过哪些网络, 以及这些网络将会产生多大的时延, 这些都是不确定的因素.

      下面以如图2所示的通信网络为例, 对报文丢失情况下TCP重传和UDP重发机制对时延的影响进行分析.

      1)TCP传输方式下, 在网络畅通时, 根据前文的仿真结果, 可知式(13)中的 $ {T}_{d}=1.3\;ms $ . 应用层报文为256字节, 则TCP传输时物理层的数据总长度为(256+20+20+26)=322 bytes, 其中, 20字节是TCP报文固定首部长度, 20字节是IP分组固定首部长度(为了简化问题, TCP和IP均忽略了选项字段), 26是以太网帧前导、首部和尾部的总长度. 选择100M以太网, 根据公式(7), 单个报文的发送时延为 $ {T}_{c}=322\times 8\;bits/100\;Mbps=25.76\;\mu s. $ TCP报文的超时重传时间 $ {T}_{RTO}=3.9\;ms. $ 网络畅通时, TCP报文的时延为 ${T}_{TCP}\!=\!{T}_{d}\!+\!(N-1){T}_{RTO}+$ $(N-1){T}_{c},$ 当N=3时, $ {T}_{TCP}=9.152\;ms, $ 根据公式(11), $ {T}_{ce}={T}_{cr}={T}_{TCP} $ , PMU发送间隔 $ {T}_{e}=20\;ms, $ $ {T}_{G}={T}_{s}+{T}_{e}+{T}_{ce}+{T}_{cr}+{T}_{j}=({T}_{s}+38.304+{T}_{j})\;ms $ 总时延大于38.304 ms, 满足大部分广域保护控制系统报文的通信时延需求.

      网络拥塞时, $ {T}_{d} $ 在1-30 s之间. 远远超过大部分广域保护控制系统报文的最大时延需求.

      2)UDP传输方式下, 在网络畅通时, 根据前文的仿真结果, 可知式(12)中的 $ {T}_{a}=1.3\;ms. $ 应用层报文为256字节, 则UDP传输时物理层的总长度为(256+16+2+8+20+26)=328 bytes, 其中16字节是增加的纠错码长度, 2字节是增加的检错码长度, 8字节是UDP报文首部长度, 20字节是IP分组固定首部长度(为了简化问题, 忽略了IP选项字段), 26是以太网帧前导、首部和尾部的总长度. 选择100 M以太网, 根据公式(7), 单个报文的发送时延为 $ {T}_{c}=328\times 8\;bits/100\;Mbps=26.24\;\mu s .$ 两帧之间最少要有96\;bits的发送时间间隔, 则帧间间隔为 $ {T}_{b}=96/10{0}^{6}s=0.96\;\mu s .$ 当N=3时, 应用层报文的总时延为 $ {T}_{UDP} $ =1.3544 ms, 远远小于广域保护系统报文的时延需求.

      网络拥塞时 $ {T}_{a}=80\;ms ,$ 假设N=3, 则 $ {T}_{UDP}= $ $ 80.0544\;ms ,$ 与单个报文的端到端时延几乎一样.

      综上, 由于TCP重传时间远大于UDP传输方式下的报文重发间隔, 且TCP重传时间随着网络拥塞情况的恶化而急剧增大, 使得丢包率相同的情况下, UDP重发机制的实时性远高于TCP重传机制.

    • 上文提出的纠错、检错与重发机制, 在电力广域保护系统通信中联合应用的具体方法如算法1和算法2.

      算法1: 发送端应用层报文生成与封装算法

      输入: 原始应用层报文 $ \mu , \mu \le $ 1400 bytes;

      输出: UDP报文 $ X $ ;

      1: 对 $ \mu $ 进行纠错编码:

       1.1: 根据 $ \mu $ 的长度, 应用本原BCH码的分组方法对      $ \mu $ 进行分组并补零. 设分组数为 $ N $ ;

       1.2: 应用本原BCH纠错编码算法对补零后的每组信     息元进行编码, 得 $ {\delta }_{i}\left(i=\mathrm{1,2},\cdots,N\right); $

       1.3: 将每组生成的纠错码 $ {\delta }_{i} $ 组合, 得纠错码 $ \delta $ ;

      2: 对 $ (\mu ,\delta ) $ 计算校验和, 得 $ \rho $ ;

      3: 对( $ \mu ,\delta ,\rho $ )进行UDP封装, 并禁用UDP校验和,     得 $ X $ ;

      4: for i=1 to 3 do send $ X $

      算法2: 接收端报文解封装与处理算法

      输入: UDP报文 $ {X}' $ ;

      输出: 原始应用层报文 $ \mu '' $ ;

      1: 接收UDP报文 $ {X}' $ 并解封, 得 $ ({\mu }',{\delta }',{\rho }') $ ;

      2: 对 $ {\mu }' $ 进行纠错译码:

       2.1: 根据 $ {\mu }' $ 的长度, 应用本原BCH码的分组方法对      $ {\mu }' $ 进行分组并补零. 设分组数为 $ N, $ 每组长度     为 $ k; $

       2.2: 应用本原BCH纠错译码算法和 $ {\delta }', $ 对补零后的     每组信息元进行纠错译码, 得纠错后的数据 $ {\tilde {\mu }}_{i}(i=$       $ \mathrm{1,2},\cdots,N) ;$

       2.3: 取 $ {\tilde {\mu }}_{i} $ $ k $ 位进行组合, 得 $ \mu '' $ ;

      3: 对 $ (\mu '',\delta ') $ 计算校验和, 得 $ \rho '' $ ;

      4: if $ {\rho }'=\rho '', $ then 将 $ \mu '' $ 提交给应用程序, 并不再处    理重复报文; else 丢弃该报文

      算法1用于发送端通信程序的编写, 给出了从原始应用层报文到UDP报文发送过程中的报文生成与封装方法及步骤: 首先利用1.2节提出的BCH纠错编码规则和分组方法对其进行纠错编码, 并按照2.1节提出的检错机制计算校验和, 然后将原始数据、纠错码与校验和一起封装到UDP报文数据区, 并禁用该UDP报文的校验和, 最后依照2.2节中的重发机制对该UDP报文进行连续3次重发. 需要说明的是, 为了避免出错报文在传输层被丢弃, 算法中增加了禁用UDP自身差错校验的机制, 即实现时应将UDP报文首部的“校验和”字段置为0.

      算法2用于接收端通信程序的编写, 给出了从UDP报文接收到将原始应用层报文提交给应用程序的报文解封与处理方法及步骤: 首先对接收到的UDP报文解封装得到未处理的应用层报文, 然后按照1.2节提出的BCH纠错译码规则和分组方法对其进行纠错译码, 得到原始应用层报文, 再按照2.1节给出的检错算法进行检错, 检错通过则将原始应用层报文提交给应用程序, 并且不再处理重复报文, 否则丢弃该报文.

      在相互通信的两端, 必须同时实现算法1和算法2.

    • 由于TCP和UDP报文在同样的信道中传输, 因此假定两种报文在信道中传输发生错误的概率为 $ P. $ 报文错误类型可以分为随机的误码错误和报文丢失错误, 假设报文在传输时误码率为 $ {P}_{SER} ,$ 丢包率为 $ {P}_{PLR}. $

      TCP通过校验和的检错机制对误码错误进行校验, 通过超时重传来提供出错和丢失报文的可靠性. 假设校验和不能检错的概率为 $ {P}_{1} ,$ 则TCP报文重发N-1次的可靠性 $ {P}_{TCP} $ 为:

      $$ {P}_{TCP}=1-\left[{P}_{SER}{P}_{1}\right(1-{P}_{PLR})+{P}_{PLR}{]}^{N} $$ (14)

      UDP传输方式下, 应用层报文同时具有检错和纠错能力, 实现对误码错误的纠正或校验, 同时通过连续多次重发来为超出纠错能力的错误报文和丢失的报文提供可靠性. 假设校验和不能校验错误的概率为 $ {P}_{2} $ , 纠错码不能纠正错误的概率为 $ {P}_{3} $ , 如果UDP快速发N次, 则使用快速多发机制的UDP协议报文的可靠性 $ {P}_{UDP} $ 为:

      $$ {P}_{UDP}=1-\left[{P}_{SER}{P}_{3}{P}_{2}\right(1-{P}_{PLR})+{P}_{PLR}{]}^{N} $$ (15)

      由于 $ {P}_{1}={P}_{2}, {P}_{3} $ 远小于1, 因此 $ {P}_{UDP}>{P}_{TCP}. $

      综上所述, UDP报文中加入检错和纠错机制并采用快速重发多次的机制时, 其可靠性远大于TCP报文的可靠性.

    • 文献[16, 17]提出了基于UDP协议的通信可靠性方案, 本文方案与这两个UDP传输方案的对比如表2所示. 可见, 与已有方案相比, 本文提出的方案在确保电力广域保护系统通信业务实时性的同时具有更高的可靠性.

      表 2  本文方案与其它方案的对比

      Table 2.  Comparison of the proposed scheme with the others

      通信方案 纠错 检错 重传 可靠性 实时性
      本文方案
      文献[16]方案
      文献[17]方案
      标准UDP传输方案

      目前没有文献将纠错机制加入到UDP传输方案中, 更没有联合使用纠错、检错和重发机制的相关研究.

    • 当电力广域保护系统的通信网络拥塞时, 报文采用TCP传输协议的时延会急剧增加, 而已有UDP传输方案不能保证报文的可靠性, 因此, 本文提出了一种新的广域保护系统通信实时性与可靠性保障方案, 该方案在传输层采用UDP协议来保障报文的实时性, 通过联合采用应用层纠错与检错机制、和报文快速重发机制来保证报文的可靠性. 针对电力广域保护通信业务特点, 本文选择本原BCH码作为纠错编译码算法, 并设计了分组方法; 给出了检错和重发的建议方案; 设计了UDP传输下的检错、纠错与重发机制的联合应用算法. 理论分析和仿真结果表明, 本文方案在网络拥塞时仍能保障绝大多数电力广域保护业务的实时性, 且可靠性高于TCP传输方案及其它UDP传输方案. 在实际应用中, 可以进一步联合传统实时性与可靠性保障方法, 优化网络和业务系统结构, 最终实现对所有业务的实时性和可靠性保障.

      本文设计的纠错译码算法只是一种实现方法, 在应用中, 也可以按照实际信道的误码率、算法的复杂性和通信设备的计算能力权衡考虑来设计适用的纠错算法. 本文工作也可为其它工业控制系统参考.

      附录1: 实验伪代码

      Input: Message

      Output: Message with BCH coding

      if 1bytesLength of Message59bytes then

         Number of groups ← 1;

         Length of code word ← 511;

         Error correction capability ← 2;

         Integer ← 9;

      else if 60bytesLength of Message115bytes brrhzimage:10:erhhz then

         Number of groups ← 4;

         Length of code word ← 255;

         Error correction capability ← 1;

         Integer ← 8;

      else if 116bytesLength of Message231bytes brrhzimage:11:erhhz then

         Number of groups ← 8;

         Length of code word ← 255;

         Error correction capability ← 1;

         Integer ← 8;

      else if 232bytesLength of Message462bytes brrhzimage:12:erhhz then

         Number of groups ← 16;

         Length of code word ← 255;

         Error correction capability ← 1;

         Integer ← 8;

      else if 463bytesLength of Message1400bytes

      then

         Number of groups ← 64;

         Length of code word ← 255;

         Error correction capability ← 1;

         Integer ← 8;

      end if

      kLength of Message*8/ Length of Message;

      nLength of code word;

      NWn- Error correction capability* Integer;

      X $[{x}_{1},{x}_{2},\cdots,{x}_{NW-k}]$ ;

      for i=1 to NW-k   do

         $ {x}_{i} $ ← 0;

      Y $[{y}_{1},{y}_{2},\cdots,{y}_{k}]$ ;

      for i=1 to k   do

         ${y_i}$ randi(1);

      Z $ [Y,X] $ ;

      Msggf[Z];

      CodeBCH encode $ [Msg,n,NW] $ ;

      Code $[{c}_{1},{c}_{2},\cdots,{c}_{n}]$ ;

      M ← (k+ Error correction capability* Integer)/16;

      A $[{a}_{1},{a}_{2},\cdots,{a}_{16}]$ ;

      for i=1 to 16   do

         ${a_i}$ randi(1);

      for i=1 to M   do

         D ← (D+ $ {A}_{i} $ );

         D $[{d}_{1},{d}_{2},\cdots,{d}_{16}]$ ;

      FCS $[{e}_{1},{e}_{2},\cdots,{e}_{16}]$ ;

      for i=1 to 16   do

         if $ {{d}}_{{i}} $ =0 then

         $ {{e}}_{{i}} $ =1;

      else

      ei=0

      $ [Nmsg,Ccode] $ $ BCH encode[Msg,Length\;of\;code\;word,NW] $ ;

      Ccode $[{d}_{1},{d}_{2},\cdots,{d}_{n}]$ ;

      B $[{b}_{1},{b}_{2},\cdots,{b}_{16}]$ ;

      for i = 1 to 16   do

         $ {b}_{i} $ randi(1);

      for i =1 to M   do

          DeFCS ← (DeFCS+ $ {B}_{i} $ )

      if   DeFCS =FCS   then

      'All errors were corrected.';

      End

      附录2:

      数据区的长度(byte)k=200

      输入信息序列为y= DA 9F 9B 6B 78 D4 87 D2 15 D0 05 6B 6A 90 F2 B8 AC 0C FA 78 93 8E 29 EC 74

      填充零后的输入信息序列为M= DA 9F 9B 6B 78 D4 87 D2 15 D0 05 6B 6A 90 F2 B8 AC 0C FA 78 93 8E 29 EC 74 00 00 00 00 00 00

      编码后的信息序列C=8F 41 5D AF 1E 20 47 97 FE E8 A4 C8 D6 75 F2 0C 19 1E A2 96 84 54 99 D2 47 00 00 00 00 00 00 B5

      错误图样序列E= 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

      译码序列为C’= 8F 41 5D AF 1E 20 47 97 FE E8 A4 C8 D6 75 F2 0C 19 1E A2 96 84 54 99 D2 47 00 00 00 00 00 00 B5

      填充零后信息恢复序列M’= DA 9F 9B 6B 78 D4 87 D2 15 D0 05 6B 6A 90 F2 B8 AC 0C FA 78 93 8E 29 EC 74 00 00 00 00 00 00

      信息恢复序列y’= DA 9F 9B 6B 78 D4 87 D2 15 D0 05 6B 6A 90 F2 B8 AC 0C FA 78 93 8E 29 EC 74

      附录3:

      数据区的长度(byte)k=200

      输入信息序列为y= 38 6A 39 89 6B 4F 69 7A 6D 49 21 99 43 83 09 23 7A 3E 10 66 A9 FF 8F 2C C1

      填充零后的输入信息序列为M= 38 6A 39 89 6B 4F 69 7A 6D 49 21 99 43 83 09 23 7A 3E 10 66 A9 FF 8F 2C C1 00 00 00 00 00 00

      编码后的信息序列C=38 6A 39 89 6B 4F 69 7A 6D 49 21 99 43 83 09 23 7A 3E 10 66 A9 FF 8F 2C C1 00 00 00 00 00 00 FF

      错误图样序列E= 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 00 04 00 00 00 00 10 00 00 00 00 00 00 00 00

      译码序列为C’= 38 4A 39 89 6B 4F 69 7A 6D 49 21 99 43 83 09 23 7A 3E 10 E6 AB FF 8F 2C C1 00 00 00 00 00 00 BF

      填充零后信息恢复序列M’= 38 4A 39 89 6B 4F 69 7A 6D 49 21 99 43 83 09 23 7A 3E 10 E6 AB FF 8F 2C C1 00 00 00 00 00 00

      信息恢复序列y’=38 4A 39 89 6B 4F 69 7A 6D 49 21 99 43 83 09 23 7A 3E 10 E6 AB FF 8F 2C C1

WeChat 关注分享

返回顶部

目录

    /

    返回文章
    返回