说明

本文基于某GPON MDU产品的当前情况,提出OMCI升级的加速方案。

因时间仓促和水平限制,文中难免存在错漏和不足之处,敬请指正。

一  问题提出

根据G.988标准相关描述,软件升级过程可分为版本下载(Download)和激活提交(Activate&Commit)两个过程。

激活提交过程主要耗时在于激活操作后的自动重启,但其优化空间不大;而版本下载过程主要耗时在于分片传输,因此本文也将集中讨论分片传输的加速。

目前某MDU软件升级过程中,子卡首先接收OLT下发的版本镜像分片(Section)并写入内存,收到End Software Download消息后对内存版本进行CRC校验,校验通过后再将版本通过2000字节的分块(Block)发送给主控板。主控板接收完所有分块后进行本地校验,校验通过后将版本写入Flash,完成版本下载过程。

该产品主控版本的下载实测结果表明:ONU子卡约每50ms(Avg:53.6ms)接收一个Window,计31*32=992字节。子卡接收到完整版本后,约每60ms(Avg:68.7ms)向主控板发送一个Block,计2000字节。从开始下载到写入Flash共耗时约8.5分钟。

为便于说明,当前方案记为“串行”下载。可以看出,除去CRC校验过程,版本其实被重复下载两遍(虽然分块传输比分片传输耗时稍短)。下文将介绍“准并行”的下载加速方案。

二  解决方法

“准并行”下载,即ONU子卡每接收到N个下载窗口(Windows),向主控板发送N×Win字节的Block,从而实现接收和发送的“准并行”,以加快下载过程。

基于Block的度量方式,“准并行”下载可细分为分块粒度和分片粒度。

2.1 窗口粒度

假设OLT和ONU协商每个窗口含32个分片(Section),每个分片恒为31字节。则当N=2时升级加速过程如下图所示:

图2.1 OMCI升级加速窗口粒度示意图

为突出重点,图中未示出ONU对OLT升级消息的响应,也未体现本地消息交互所必须的进程协作。

START DOWNLOAD消息中携带初次计算的Block额定数目(也可由SEND BLOCK消息携带)。SEND BLOCK消息中携带Block当前序号,Block字节数以及根据窗口尺寸而调整的Block额定数目。该Block序号对应OLT下发的两个完整窗口。

关键的处理逻辑如下:

  • 若(当前序号≤前次序号)或(当前序号>额定序号),打印错序提示及前次、当前和额定序号值。
  • 若收到SEND_BLOCK消息,则依次发送(当前序号-前次序号)个Block。
  • 若收到END_DOWNLOAD消息,则依次发送(额定序号-当前序号)个Block。

可以看出,若当前序号始终等于前次序号,则“准并行”下载退化为“串行”下载。

注意,从OLT接收Section的代码段应确保发往主控的内存版本和Block序号正确性,亦即该代码段应根据下载窗口尺寸来调整Block大小。Block Interval时长应大于单个分块传输的处理时间。对于该产品,N≥2,即Block大小至少为2×32×31=1984≈2000字节,但也不宜过大。

2.2 分片粒度

假设OLT和ONU协商每个窗口含32个分片(Section),每个分片恒为31字节。则当N=2时升级加速过程如下图所示:

图2.2 OMCI升级加速分片粒度示意图

为突出重点,图中未示出ONU对OLT升级消息的响应,也未体现本地消息交互所必须的进程协作。

START DOWNLOAD消息中携带初次计算的Section额定数目(也可由SEND BLOCK消息携带)。SEND BLOCK消息中携带Section当前序号,该Section序号对应OLT下发的两个完整窗口。

关键的处理逻辑如下:

  • 若(当前序号≤前次序号)或(当前序号>额定序号),打印错序提示及前次、当前和额定序号值。
  • 若收到SEND_BLOCK消息,则依次发送(当前序号-前次序号)个Section的Block。
  • 若收到END_DOWNLOAD消息,则依次发送(额定序号-当前序号)个Section的Block。
  • Block大小应维持在2000字节左右,过大则需强制分多块传输。

可以看出,若当前序号始终等于前次序号,则“准并行”下载退化为“串行”下载。

注意,从OLT接收Section的代码段应确保发往主控的内存版本和Section序号正确性。因分片长度固定,故Section额定数目固定,无需调整。Block Interval时长应大于单个分块传输的处理时间。对于该产品,N≥2,即Block大小至少为2×32×31=1984≈2000字节,但也不宜过大。

三  效果评价

根据“串行”下载实测值,可估算“准并行”下载将缩短升级过程近3分钟,即加速约30%。该加速对于Flash较小下载较慢的ONU更为明显。

此外,“串行”下载向主控发送版本分块时,可能由于消息发送过快,主控CPU提包限速导致收到的消息存在未剥除消息头的概率。因而该产品子卡在向主控分块传输时进行30ms延迟。而“准并行”下载时,接收Block速度低于发送Block速度,因此不需要分块延迟。

某MDU产品OMCI软件升级加速方案的更多相关文章

  1. MDU某产品OMCI模块代码质量现状分析

    说明 本文参考MDU系列某产品OMCI模块现有代码,提取若干实例以说明目前的代码质量,亦可作为甄别不良代码的参考. 本文旨在就事论事,而非否定前人(没有前人的努力也难有后人的进步).希望以史为鉴,不破 ...

  2. EPON ONU软件升级的若干优化方案

    1 说明 目前EPON ONU软件升级主要有IP方式(如SNMP/TR069)和TFTP+OAM两种.前者需占用大量IP地址,且配置ONU的IP地址需要手工操作,给业务开通和系统维护带来较大不便:后者 ...

  3. MTM量身定制系统 - 富友ERP产品 - 信息化推动服装行业管理软件升级

    MTM量身定制系统 - 富友ERP产品 - 信息化推动服装行业管理软件升级 国内第一款量体定制管理系统               结合富友软件10年服装行业经验和多家大型量身定制企业管理经验,推出的 ...

  4. Enea推出Linux实时加速方案专门针对Xilinx UltraScale+

    导读 Enea(纳斯达克OMX Nordic:ENEA)Linux实时加速方案的扩展版本,完全集成了Xilinx UltraScale +系列的所有处理单元.借助Xilinx开发者大会(XDF)201 ...

  5. “DNAT+云链接+CDN”加速方案,助力出海企业落地生长

    摘要:“DNAT+云链接+CDN”加速方案,真正释放技术红利,真诚助力企业出海. 随着国内互联网行业的人口红利逐渐消失,本土互联网市场竞争不断加剧,加之国家多项“走出去”政策的推动,越来越多的中国互联 ...

  6. TODO:软件升级的那些事

    TODO:软件升级的那些事 软件升级,指软件从低版本向高版本的更新.由于高版本常常修复低版本的部分BUG,所以经历了软件升级,一般都会比原版本的性能更好,得到优化的效果,用户也能有更好的体验. 最近常 ...

  7. OpenVZ VPS加速方案–Final Speed

    body,td { font-family: 微软雅黑; font-size: 10pt }   OpenVZ VPS加速方案–Final Speed OpenVZ VPS加速方案–Final Spe ...

  8. 【swupdate文档 三】SWUpdate: 嵌入式系统的软件升级

    SWUpdate: 嵌入式系统的软件升级 概述 本项目被认为有助于从存储媒体或网络更新嵌入式系统.但是,它应该主要作为一个框架来考虑,在这个框架中可以方便地向应用程序添加更多的协议或安装程序(在SWU ...

  9. python环境搭建-设置PyCharm软件的配色方案和Python解释器

    设置PyCharm软件的配色方案 设置Python解释器(用于Python2 or 3 的切换)

随机推荐

  1. MyBatis整合Spring MVC

    前面几篇文章已经讲到了mybatis与spring 的集成.目前主流的Web MVC框架,除了Struts这个主力外,还有Spring MVC,主要是由于 Spring MVC 配置比较简单,使用起来 ...

  2. e829. 获得和设置JTabbedPane 的卡片

    // To create a tabbed pane, see e828 创建JTabbedPane // Get the index of the currently selected tab in ...

  3. python3 pyodbc简单使用

    转自:https://my.oschina.net/zhengyijie/blog/35587 1.连接数据库 首先要import pyodbc 1)直接连接数据库和创建一个游标(cursor) cn ...

  4. MySQL中ALTER ,CHANGE , MODIFY

    ALTER TABLE project_list CHANGE COLUMN descriptionofproj proj_desc VARCHAR(100), CHANGE COLUMN contr ...

  5. 学习Unity的步骤

    作者:王选易链接:https://www.zhihu.com/question/23790314/answer/46815232来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  6. CI框架 -- 网页缓存

    CodeIgniter 可以让你通过缓存页面来达到更好的性能. 尽管 CodeIgniter 已经相当高效了,但是网页中的动态内容.主机的内存 CPU 和数据库读取速度等因素直接影响了网页的加载速度. ...

  7. (弃) Keystone CLI_可选命令详解

    本文详细介绍keystone客户端命令行界面(CLI)keystone的可选子命令.关于keystone客户端命令行工具keystone命令的子命令和选项列表,请参考前文<解读keystone命 ...

  8. Keystone-manage 命令

    本文介绍Icehouse发行版的keystone-manage命令 keystone-manage是用来同keystone服务进行交互的命令行工具,通常该命令只用于不能通过HTTP API完成的操作, ...

  9. 精选10款超酷的HTML5/CSS3菜单

    今天向大家精选了10款超酷的HTML5/CSS3菜单,给你的网页添加不一样的精彩,一起来围观一下吧. 1.CSS3手风琴菜单 下拉展开带弹性动画 利用CSS3技术可以实现各种各样的网页菜单,我们之前也 ...

  10. Java基础--深克隆补充

    深克隆文章很多,这里推荐Java提高篇--对象克隆(复制). 以上文章条理清晰,一目了然,但最近在项目中碰到的实际问题是,所要克隆的对象是加上子类父类共计207个,无论用上述两种方式的哪一种,都要一一 ...