参考链接:https://blog.csdn.net/DontDash/article/details/139690446
一、GPON梳理
1. 基础概念
PON(Passive Optical Network,无源光网络)分为三部分,分别是OLT(Optical Line Terminal,光线路终端)、ODN(Optical Distribution Network,无源光分路器)和ONU(Optical Network Unit,光网络单元)
OLT是无源光网络的起点,它通过以太网电缆连接到核心交换机。
ODN是基于PON设备的光缆网络。光分路器是ODN中关键的器件,是基于光功率分路的无源器件,可以将一路光信号分成多路以及完成相反的过程。
ONU是光网络中的用户端设备,放置在用户端与OLT配合使用。ONU 将通过光纤传输的光信号转换为电信号。然后将这些电信号发送给各个订户。
--宽带光纤接入的主要应用类型包括:FTTH、FTTO和FTTB,不同应用类型下用户侧设备的形态也不同。FTTH、FTTO的用户侧设备由单个用户使用,称为ONT(Optical network terminal,光网络终端),FTTB的用户侧设备由多个用户共享,称为ONU(Optical Network Unit,光网络单元)。这里所说的用户是指运营商独立计费的用户,不是指使用的终端数。
--ONT(ITU-T术语)就是我们俗称的光猫,分为SFU(SingleFamilyUnit,单个家庭用户单元)、HGU(HomeGatewayUnit,家庭网关单元)和SBU(SingleBusinessUnit,单个商业用户单元)。
--ONU(IEEE 术语)分为MDU(Multi-DwellingUnit,多住户单元)和MTU(Multi-TenantUnit,多租户单元)。
2. 协议规范
PON技术主要有GPON(Gigabit Passive Optical Network)和EPON(Ethernet Passive Optical Network)两种,它们的技术标准分别由ITU-T/FSAN和IEEE 802.3ah工作组制定。
--ITU-T/FSAN:以会员身份(运营商为主)参与的具有官方性质的通信行业标准化组织,制定的标准更关注运营商的业务与可运营需求。
--IEEE:以工程师个人身份参与的电子/电器行业化标准组织,更关注技术的创新和实现,缺乏对运营商长远需求的理解与分析。
2.1 GPON协议栈
2.1.1 GPON帧结构
GPON的物理层是定长的TDM帧(125 us)。GPON帧由帧头和净荷组成,内含数据信息和控制信息。
GPON帧数据信息:数据信息都在净荷中。
--上行帧净荷部分有三种:ATM信元、GEM信元、DBA帧
--下行帧净荷部分有两种:ATM信元、GEM信元
GEM帧:
GPON帧控制信息:控制信息有的在净荷中,有的在帧头中。包括OMCI、EOAM、PLOAM(关于这三个名词,后面有详细介绍)。
GPON标准中定义了一种特殊的封装方法:GEM(GPON Encapsulation Mode),而采用GEM封装形成的帧,我们称之为GEM帧。
对到来的以太网帧,GPON系统对其进行解析,将以太网帧中所有重要关键数据(目的MAC地址、源MAC地址、类型、数据、FCS封装)直接映射到GEM帧的 Payload中,GEM帧再自动封装头部信息。
GEM帧头由PLI(净负荷长度指示)、PortID(端口ID)、PTI(净负荷类型指示)和HEC(头差错校验)组成。
--PLI(Payload Length Indicator):表示头部后面的净负荷域的长度,共12bit,最多指示到4095字节,所以大于这个值的用户数据帧必须要采用分片机制传送。
--Port-ID(Port Identifier):表示GEM帧所在的GEM Port。
--PTI(Payload Type Indicator):表示数据净荷类型,同时用于指示在净荷分段时是否为最后一帧。
--HEC(Header Error Check):表示信头差错控制,用于帧头的错误检测和纠正。
具体来说,GPON系统保留以太网帧中DA(destination MAC address)、SA(source MAC address)、Ethernet Type以太网类型、MAC client data数据负载、FCS(Frame Check Sequence)帧校验序列等信息,再封装头部,最终组成GEM帧。GEM帧中不包含前导和SFD字节。
上行帧:
上行GTC帧由多个突发(burst)组成。每个上行传输突发由上行物理层开销(PLOu)以及与Alloc-ID对应的一个或多个带宽分配时隙组成。上行帧长为125us,即19440字节。
--PLOu:上行物理层开销。PLOu字节在StartTime指针指示的时间点之前发送。
--PLOAM:物理层OAM。物理层OAM (PLOAM )消息通道用于OLT 和ONU 之间承载OAM 功能的消息,消息长度固定为13字节,下行方向由OLT 发送至ONU ,上行方向由ONU 发送至OLT 。
--DBRu:上行动态带宽报告。DBRu 用于上报T-CONT 的状态,为了给下一次申请带宽,完成ONU 的动态带宽分配。
--GTC 净荷域:GTC每一个帧中都可能包含GEM部分,在GTC帧中数据净荷部分,可以是数据GEM帧,也可以是DBA 状态报告。净荷长度等于分配时隙长度减去开销长度。
下行帧:
下行GTC帧由下行GTC帧帧头【物理控制块(PCBd)】和GTC净荷部分(一系列GEM帧)组成。下行帧长为125us,即38880字节。
ONU根据GEM 帧头中携带的12比特Port-ID值过滤下行GEM 帧。ONU 经过配置后可识别出属于自己的Port-ID,只接收属于自己的GEM帧并将其送到GEM客户端处理进程作进一步处理。
下行GTC帧帧头组成:
Psync:物理同步。固定长度为32字节,编码为0xB6AB31E0,ONU利用Psync来确定下行帧的起始位置。
Ident:用于指示更大的帧结构。最高的1比特用于指示下行FEC状态,低30位比特为复帧计数器。
PLOAMd:携带下行PLOAM消息,用于完成ONU 激活、OMCC 建立、加密配置、密钥管理和告警通知等PON TC 层管理功能。
BIP:长8比特,携带的比特间插奇偶校验信息覆盖了所有传输字节。
Plend:下行净荷长度。为了保证健壮性,Plend域传送两次。Plend包括三个部分,Blen(带宽映射长度)、Alen(ATM块的长度)、CRC。
Blen:12bit,在125μs时间周期内最多能够分配4095个带宽授权。
Alen:12bit,GEM模式时,Alen域应置为全0。
CRC:8bit。
BWmap:带宽映射。8字节分配结构的向量数组。数组中的每个条目代表分配给某个特定T-CONT的带宽。映射表中条目的数量由Plend域指定。
Alloc-ID:用于指示带宽分配的接收者,即特定的T-CONT或ONU的上行OMCC通道。规则:Alloc-ID值0~253用于直接标识ONU。每个Alloc-ID都唯一标识了一个T-CONT。
Flags:Flags域为12比特,包含4个独立的与上行传输功能相关的指示符,用于指示上行突发的部分功能结构。
StartTime:用于指示带宽分配时隙的开始时间。该时间以字节为单位,在上行GTC帧中从0开始,并且限制上行帧的大小不超过65536字节。
StopTime:用于指示带宽分配时隙的结束时间。该时间以字节为单位,在上行GTC帧中从0开始。StopTime域指示了该带宽分配时隙的最后一个有效数据字节。
CRC:8bit。
2.1.2 EOAM/PLOAM/OMCI
OLT的一个PON口下可以高效有序的管理下挂的一堆ONU,依靠管理机制包含3种,分别是嵌入式OAM、PLOAM和OMCI。嵌入式OAM和PLOAM主要用于控制管理PMD层和TC层,而OMCI主要用于更高层的配置和管理。
嵌入式OAM:
嵌入式OAM(embedded OAM)直接封装在GTC帧头的特定字段,在TC成帧子层进行处理,是一条低时延的通道,主要用于实时性强的控制信息,如动态带宽分配、密钥交换、链路误码监视等。
PLOAM:
PLOAM主要封装在GTC帧的特定部分,占13字节,是一条基于消息的通道,主要用于PMD和TC层中,除了嵌入式OAM实现的其他控制管理功能,包括ONU激活、OMCC通道建立、加密配置和密钥管理、性能监视和告警等。
PLOAM(Physical layer OAM),比embedded管理信道更灵活,比OMCI 更快一些。
PLOAM消息按发送方向可分为两大类:下行消息和上行消息。其中下行消息是指由OLT发送给ONU的,上行消息是指由ONU发送给OLT的。
OMCI:
OMCI位于TC层之上,主要功能包括配置管理、故障管理、性能监视、软件升级等,管理的业务主要包括GEM适配层、以太网业务、话音业务、TDM业务等。OMCI是适用于GPON、XG-PON等系统的、统一的ONU远程管理和控制接口标准。
OMCI类似于TR069,有很多的节点,也可以用来对设备进行配置;OMCI的attribute相当于TR069里面的parameter的概念。
OMCI主要包含三部分内容:传递通道、管理协议和管理实体。
--传递通道:OMCI的传递需要在OLT于ONU之间建立一条专用的双向虚连接,这样的通道称之为OMCC。ONU在向OLT注册时建立OMCC,在默认Alloc-ID(T-CONT)中承载。在ONU激活过程中,当OLT给ONU分配ONU-ID(通过PLOAM消息Assign_ONU-ID)时,ONU同时生成默认的Alloc-ID,其数值上等于ONU-ID。OMCC采用专用的GEM port,其GEM Port-ID在ONU认证完成之后,由OLT(通过PLOAM消息Configure_Port-ID)配置的。
--管理协议:OMCI功能通过其管理协议来执行,管理协议的消息按照其功能可以分为以下几类
管理实体实例的创建与删除
管理实体属性的配置和读取
告警上报和读取
MIB上传和复位测试功能
ONU软件升级
ONU重启
OLT与ONU时间同步
--管理实体:OMCI的管理实体(Managed Entity, ME)是ONU资源和业务的一种抽象,在有些标准中,也称为“管理对象”。目前已定义的ME有200多项,主要可分为以下几类:
设备管理
PON口管理
二层数据业务
三层数据业务
以太网业务
xDSL业务
面(控制管理平面):负责完成安全加密等OAM功能,分为OMCI、PLOAM、嵌入OAM三个部分。嵌入式OAM 和PLOAM通道管理PMD和GTC层功能,而OMCI提供了一个统一的管理上层(业务定义) 的系统。
OMCI:主要负责ONU业务配置、故障管理及性能管理。
PLOAM:负责测距、ONU激活、OMCC建立和告警传送。
OAM:主要负责某些低延时通道,该通道可用来进行带宽授权、动态带宽分配指示、FEC等。
二、Web开发
1. 基础概念
使用典型的C/S架构,例如thttpd是一个轻量级webserver,提供了http服务和简单的CGI支持。我们可以虚拟机部署一个ubuntu作为服务端,本机浏览器作为客户端访问ubuntu ip地址。
与互联网业界相比,我们所开发的家庭网关Web开发有如下特点:
--不关注并发、加载:不需要像电商网站那样考虑井喷式的并发请求、不需要“懒加载”等炫酷技术。
--定制、复用:同一套页面的代码可能被几十上百个产品在用,在某一个产品上修改一个东西,得考虑到是否对其他产品产生影响;同一个需求,可能有很多种方案去实现,但考虑到定制需要,则不得不选稍微复杂一点的方法。
--硬件资源受限:受限是指我们的单板资源,flash有限,不允许我们随心所欲地使用各种高大上的前端开源插件,所以有时候我们想采用一些开源组件,也只取所需部分。
2. 环境搭建+简单示例
vm16虚拟机+ubuntu18.04
安装gcc:安装成功后版本查询
安装thttpd:通过thttpd官网下载源码,解压到Ubuntu,安装成功后版本查询
--拷贝配置到/etc目录:sudo cp thttpd.conf /etc/
--修改thttpd.conf:web应用程序路径、用户名、cgi文件为任意文件
--新建c程序:编写简单的C程序打印用于测试thttpd可调用,并使用gcc编译测试
--新建html:用于客户端访问显示,以及按键执行c程序
--开启thttpd:sudo thttod -C /etc/thttpd.conf
--客户端(本机浏览器)输入服务端ip地址访问服务端(Ubuntu通过thttpd部署的webserver)