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

1 说明


目前EPON
ONU软件升级主要有IP方式(如SNMP/TR069)和TFTP+OAM两种。前者需占用大量IP地址,且配置ONU的IP地址需要手工操作,给业务开通和系统维护带来较大不便;后者对每个ONU的升级都需要单独进行OAM报文的协议交互,因为OAM报文本身发送速度和长度的限制,不能较快地交互升级。

对于海量终端的EPON
OAM软件升级,为避免对维护的影响,要求尽量缩短升级时间,此外,为提升用户满意度,需要实现在业务不中断的情况下进行软件升级。最后,在软件层面上,版本下载异常中止时应及时回收版本内存。

本文将基于电信EPON设备技术要求V3.0所规定的软件升级过程,提出上述三个问题的优化改进方案,以供开发和维护人员参考。

2 升级过程简介


本节将简要介绍基于TFTP协议和OAM机制的ONU软件远程升级功能。该机制描述详见《中国电信EPON设备技术要求V3.0_201106》规范“ONU软件升级要求”一节。

为便于描述问题,本文将软件升级过程分为“版本下载”和“激活加载”两个过程。

ONU软件下载的交互流程如图2.1所示。

图2.1 ONU软件下载的消息交互示意图

OLT通过GET命令获得ONU信息,当确定ONU需要更新软件/固件时先向ONU发送File
Write Request消息。ONU返回File Transfer ACK消息(Block number=0)后,则OLT开始将要写入的文件分段通过File
Transfer Data消息依次发送给ONU,并且只有当ONU返回File Transfer ACK确认消息(Block
number>0)后,OLT才能发送下个分段。当OLT成功发送完所有的分段后,再通过End Download
Request消息校验ONU下载软件的正确性,并判断该软件是否写入非易失性存储器。收到End Download Request消息时,ONU返回End
Download Response消息作为应答。此时,软件下载过程结束。

激活和加载软件镜像的消息交互流程如图2.2所示。

图2.2 ONU软件激活和加载的流程

ONU成功下载了有效的软件镜像后,根据具体的应用策略,OLT可以立即发送Activate
Image Request消息,激活所下载的软件镜像。正常情况下,ONU返回Activate Image
Response以确认激活操作成功,然后ONU自动使用另一存储区的软件镜像重新启动。收到ONU返回Activate Image Response消息后,
OLT发送Commit Image
Request消息,要求ONU将该备用存储区的软件设置为ONU启动时的缺省加载软件。ONU被Commited以后,ONU以后的启动均使用该软件镜像,原有主用存储区的软件变为备用存储区。

Activate Image Request/Response和Commit Image
Request/Response消息分别是用来激活和设置缺省加载(Commit)新下载的软件。在实际应用中根据实际需求应可通过EMS灵活应用Activate
Image Request/Response和Commit Image Request/Response。

3 升级优化


3.1 快速批量升级


批量升级ONU时,最简单的策略就是按照下载、激活和加载的流程,依次ONU1、ONU2直至ONU
n。不幸的是,这种升级策略将耗费大量时间,因此简单而不实用。

若要加快批量升级速度,关键是尽可能逼近“并行化”升级。

激活提交过程主要耗时在于Activate操作后的自动重启,但因其类似异步机制故优化空间不大;而版本下载过程主要耗时在于File Transfer
Data消息的分块传输,因此本节也将集中讨论分块传输的“并行化”。

3.1.1 广播方案

该方案中,OLT通过File Transfer Data(广播LLID)消息将Data
Block发给PON口下所有在线ONU,除此之外的版本下载控制消息仍采用单播LLID方式,如图3.1所示。

图3.1 ONU批量升级加速示意图(广播方案)

如图所示,广播方案可实现并行下载,从而极大地缩短批量升级时间。因为File Write
Request等版本下载控制消息仍采用单播方式,因此可控制对哪些ONU进行升级。

但这仅仅是个看上去很美的方案,还需注意:

1) 考虑到ONU处理速度和链路时延存在差异,OLT分块传输时不需要等待所有ONU返回的File Transfer
Ack消息;而在分块传输结束后根据ONU返回的End Download
Response(单播LLID)消息,单独对下载失败(如丢包等)的ONU进行版本下载。

2)
考虑到链路丢包或ONU读写差错,若OLT在分块传输过程中收到ONU返回的Error消息,可强制将上一分块重传3次(广播)。

3.1.2 流水线方案

为简化图示,将OLT发送给ONU m分块n的File Transfer Data消息记为FTD_m/n,其File
Transfer Ack应答消息记为FTA_m/n。OLT对PON口下某个数目的ONU并发发送FTD_m/n消息,在收到ONU
k应答的FTA_k/n应答消息后立即发送FTD_k/(n+1)消息。此处“某个数目”取决于OLT支持的并发线程数目。

流水线方案如下图所示:

图3.2 ONU批量升级加速示意图(流水线方案)

如图所示,在File_Writing_OLT_Timer时间里,可以看作对3个ONU并行分段传输。进一步可以看出,该方案其实是减少了等待FTA消息的“闲余”时间,也就是所谓的流水线(pipeline)技术。

该方案可实现准并行处理,且不需要修改电信规范定义的消息。

3.2 业务无中断升级

如前所述,普通的升级过程需要经历Download→Activate→Commit等操作。其中Activate操作会引起ONU自动重启,从而中断业务。因此,要实现升级过程中业务不中断,就不能在下载版本后立即Activate。

3.2.1 推荐方案

电信规范里ONU软件激活和加载的状态迁移如图3.3所示。在图中,U1表示image
1是激活且缺省加载,image 2是未激活且非缺省加载;U2表示软件image
1是未激活且非缺省加载,image2是激活且缺省加载;U3表示image1是未激活且缺省加载,image2是激活且非缺省加载;U4表示image1是激活且非缺省加载,image2是未激活且缺省加载。

图3.3 ONU软件激活和加载的状态迁移图

其中,U1和U2状态可视为初始状态,分别表示image 1和image
2为主用存储区。

对于图中各箭头标记,说明如下(注意,图中Activate操作含重启操作):

1) U1状态Activate①后,迁移至U3状态。

ONU挂起当前已激活的软件镜像image 1,使用未激活的有效的软件镜像image
2重新启动。此时,U3状态中运行镜像image 2。

2) U3状态Reboot②后,迁移至U1状态。

ONU重启时,因新加载的软件镜像image
2未曾commited,故仍然使用原有的软件镜像image 1。此时,U1状态中运行镜像image 1。

3) U3状态Commit③后,迁移至U2状态。

ONU将当前备用存储区的软件image
2变为主用存储区的软件,作为ONU启动时默认加载执行的软件,而主用区的软件镜像image
1变为备用区的软件(可视为主备区标志互换)。ONU以后重启,均将使用新主用存储区的软件镜像image 2。

4) U1状态Commit⑤后,迁移至U4状态。

备用存储区的软件image
2变为主用存储区的软件,作为ONU启动时默认加载执行的软件,而主用区的软件镜像image 1变为备用区的软件。

5) U4状态Reboot⑥后,迁移至U2状态。

ONU重启后使用新主用存储区的软件镜像image 2。

6) 需注意重启后状态位的迁移,U4备用区image
1的Active状态位由Yes变为No,而主用区image 2的Active状态位由No变为Yes,表示image 2激活且缺省加载。

可见,U1-->U3-->U2或U2-->U4-->U1为Download→Activate(自动Reboot)→Commit流程(普通升级),记为流程一。U1-->U4-->U2或U2-->U3-->U1为Download→Commit→人工Reboot流程,记为流程二。

进一步可见,流程一和流程二的最终状态及状态位完全相同,不同之处在于Reboot的时机。采用流程二,即Commit后等待用户手工断电重启,从而达到升级业务不中断的效果。

进一步可见,软件升级后(Commited),再次执行Activate(自动Reboot)→Commit或Commit→人工Reboot均可实现版本回滚的效果。注意,此处的“版本回滚”不同于因电力或链路故障等导致升级失败或ONU无法正常工作时的的“自动回滚(Back-Rolling)”功能。

3.2.2 对照方案

作为对照,下面给出曾了解到的两种策略:

1)
版本下载后,OLT不会自动下发Activate和Commit操作,而在需要采用新版本时手工或策略方式下发Activate和Commit操作;

2) 版本下载后,OLT等待ONU再次上线时(如开关电或拔插光纤)
自动下发Activate和Commit操作,从而在不影响ONU业务的情况下自动控制ONU重启和更新版本。

上述两种策略均可实现下载过程全天候进行。

其中,策略1需要维护人员在合适的时间手工(批量)完成Activate和Commit操作,对于现网的海量FTTH终端而言不太方便;策略2待用户手工重启ONU终端或拔插尾纤时,OLT自动发起Activate和Commit操作,其优点在于“自动”,其缺点在于手动重启ONU后再次被重启(Activate),从用户感知上业务开通较慢。

对比策略1和2,上节所述的Download→Commit→Reboot(用户重启)策略可能更好,即先下载版本并执行Commit操作,待用户重启ONU时即可加载新版本。

3.3 下载异常时内存回收

软件升级过程中,ONU在收到发送OLT的File Write
Request消息后,通常会申请版本大小的内存空间,并在回送End Download Response消息后释放内存。

若版本下载过程异常中止,ONU可能还未释放内存,此时将会就占据大量单板内存空间。如果OLT不再重新下载,则占用大块内存可能会影响语音等其他业务正常运行。

现实中版本下载中断后长时间不再重新下载的概率应该不大,但不应排除其可能性。

以下提供一种版本下载异常时ONU侧内存回收的参考方案:

ONU在收到File Write
Request消息后,启动一个定时器Td(暂定60s)。该定时器在ONU回送End Download Response消息后停止。

1) 若在Td时长内收到File Write
Request等下载消息,则重启定时器,且超时计数清零;

2) 若在Td超时后仍未收到下载消息,则超时计数加1并重启定时器。

3)
在连续超时3次后认为此次下载异常中止,停止定时器,清空超时计数并释放内存,退出升级状态。

考虑到End Download
Request消息处理可能存在的重传间隔,建议该定时器时长大于30s。

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

时间: 2024-10-30 19:51:57

EPON ONU软件升级的若干优化方案的相关文章

TODO:软件升级的那些事

软件升级,指软件从低版本向高版本的更新.由于高版本常常修复低版本的部分BUG,所以经历了软件升级,一般都会比原版本的性能更好,得到优化的效果,用户也能有更好的体验. 最近常见的升级有 1.iOS的升级 2.macOS的升级 3.chrome的升级 但是这升级给我门带来好多麻烦,iOS的升级导致机器好点,系统慢:macOS的升级导致进不了系统不得已重新安装系统:chrome的升级导致崩溃,不能浏览网页. 虽然网上有很大解决方案,但是这样的体验给用户带来非常不友好的体验,若非必须,更多人会选择其它替

针对MySQL大表优化方案

详解MySQL大表优化方案 (1).字段 (2).索引 (3).规范查询SQL (4).存储引擎 (5).mysql配置参数优化 (6).mysql读写分离 (7).分区和分表 单表优化: 当单表的数据不是一直在暴增,不建议使用拆分,拆分会带来逻辑,部署,运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的.而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量 (1).字段 l 尽量使用TINYINT.SMALLINT

MySQL大表优化方案总结

今天看了一篇mysql大表优化方案的文章( https://mp.weixin.qq.com/s/qM6MAd_ZcrHEapz0D4nSrA ),应该说是属于科普级别的,但是技术肯定是要先大概理解了才能再深入的,深入的话推荐看 MySQL技术内幕:InnoDB存储引擎(第2版) 总结一下大表的优化方案就是: 分库分表加分区 各个层级加缓存(mysql层是缓存调参) 字段索引要优化 SQL语句别复杂 读写分离大法好 升级硬件是王道

kvm性能优化方案

kvm性能优化方案 kvm性能优化,主要集中在cpu.内存.磁盘.网络,4个方面,当然对于这里面的优化,也是要分场景的,不同的场景其优化方向也是不同的,下面具体聊聊这4个方面的优化细节. cpu 在介绍cpu之前,必须要讲清楚numa的概念,建议先参考如下两篇文章 CPU Topology 玩转cpu-topology 查看cpu信息脚本: #!/bin/bash # Simple print cpu topology # Author: kodango function get_nr_proc

大公司的静态资源优化方案

今天看到一篇关于浏览器缓存问题的文章,觉得很不错(大神就是牛叉呀). 大公司的静态资源优化方案,基本上要实现这么几个东西:. 配置超长时间的本地缓存 —— 节省带宽,提高性能 采用内容摘要作为缓存更新依据 —— 精确的缓存控制 静态资源CDN部署 —— 优化网络请求 更资源发布路径实现非覆盖式发布 —— 平滑升级 全文链接:http://www.zhihu.com/question/20790576:

MySql优化方案

mysql优化方案总结 u       Mysql数据库的优化技术 对mysql优化时一个综合性的技术,主要包括 a: 表的设计合理化(符合3NF) b: 添加适当索引(index) [四种: 普通索引.主键索引.唯一索引unique.全文索引] c: 分表技术(水平分割.垂直分割) d: 读写[写: update/delete/add]分离 e: 存储过程 [模块化编程,可以提高速度] f: 对mysql配置优化 [配置最大并发数my.ini, 调整缓存大小 ] g: mysql服务器硬件升级

mysql大内存高性能优化方案

mysql优化是一个相对来说比较重要的事情了,特别像对mysql读写比较多的网站就显得非常重要了,下面我们来介绍mysql大内存高性能优化方案 8G内存下MySQL的优化 按照下面的设置试试看:key_buffer = 3840Mmax_allowed_packet = 16Mtable_cache = 1024sort_buffer_size = 32Mread_buffer_size = 32Mread_rnd_buffer_size = 32Mmyisam_sort_buffer_size

谈谈对一些软件架构设计箴言的理解 对软件的过早地优化是万恶的根源

http://www.nowamagic.net/librarys/veda/detail/1897在做项目的时候,有些同事总是提前考虑性能优化,需求变更又是一大堆的重写,让我想起了Donald Knuth 提到的:对软件的过早地优化是万恶的根源.这里就简单的说几条重要的软件名人哲学. 软件中唯一不变的就是变化 在软件开发过程中需求是不停的变化的,随着客户对系统的认识,和现有开发功能和软件的认识,也许一开始他提出的需求就是背离的.记得网上有一句笑话,是说需求变化的: 程序员XX遭遇车祸成植物人,

数据库sql优化方案

声明:这个不是我自己写的,是我们老师给我,我拿出来分享一下! 为什么要优化:     随着实际项目的启动,数据库经过一段时间的运行,最初的数据库设置,会与实际数据库运行性能会有一些差异,这时我们         就需要做一个优化调整. 数据库优化这个课题较大,可分为四大类:       >主机性能       >内存使用性能       >网络传输性能       >SQL语句执行性能[软件工程师] 下面列出一些数据库SQL优化方案: (01)选择最有效率的表名顺序(笔试常考)