MTK方案GPON ONU注册流程和OMCI分析

Linux 系统

咱们以Ubuntu为例

1、使用tcpdump命令

在使用时我们只需要使用如下参数即可

-n    不转换主机地址到主机名,这样用于避免DNS解析
-i    指定网络接口
-e    增加以太网帧头部信息输出
-v    输出更详细的信息

   
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

2、直接使用Wirshark

在这里插入图片描述

Windows 系统

设置wireshark抓标签带有Vlan ID

在这里插入图片描述

一、设置Wireshark

1、打开Wireshark,点击 编辑–>首选项
在这里插入图片描述

2、选择 外观 --> (中文版),对应appearance–>columns,并点击下方 + 按钮,添加命名 “Vlan”(大小写皆可),选择802.1Q VLAN id,并确认保存。
在这里插入图片描述

二、修改电脑注册表

1、打开电脑 网络和Internet设置,点击 以太网–>更改适配器选项。
在这里插入图片描述

选择抓包的网口,右键 点击“属性”。
在这里插入图片描述

选择Microsoft网络客户端,点击配置
在这里插入图片描述

选择高级,找到Priority & VLAN(中文版为优先级和VLAN)并选择Packet Priority & VLAN Disable(中文版为禁止),确定保存。有的网卡可能得设置使能,但我这款网卡设置禁止后好用
在这里插入图片描述

选择详细信息,属性找到驱动程序关键字,记录值。
{4d36e972-e325-11ce-bfc1-08002be10318}\0018
在这里插入图片描述

2、在windows运行下查找regedit,进入注册表编辑器。
进入HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class{4d36e972-e325-11ce-bfc1-08002be10318}\0018
在这里插入图片描述

查看 MonitorModeEnabled的值是否为1,PreserveVlanInfoInRxPacket的值是否为1.
若不存在,则新建 DWORD(32位),文件名分别为MonitorModeEnabled 、PreserveVlanInfoInRxPacket,设置值为1。注意设置完后重启电脑。
在这里插入图片描述

然后保存重启即可

GPON ONU注册流程主要包含以下几个关键阶段: ### 发现阶段 OLT周期性地在特定时间窗口内发送Discovery Gate消息,此消息以广播形式发送,用于发现新的ONU。处于未注册状态的ONU在接收到该消息后,会在指定的随机时间窗口内发送Discovery Report消息给OLT,以表明自身的存在。 ### 测距阶段 OLT在接收到ONU的Discovery Report消息后,会为该ONU分配一个临时的逻辑链路标识(LLID),并发送Range消息给ONU进行测距。ONU接收到Range消息后,立即发送Range Response消息返回给OLT。OLT通过测量发送Range消息接收Range Response消息之间的时间差,计算出ONU与OLT之间的距离信号传输时延,进而为ONU分配合适的均衡时延,以保证各个ONU的信号能够在OLT处准确复用。 ### 注册阶段 完成测距后,OLT会发送Registration GEM Port消息给ONU,为其分配一个或多个GEM Port(GPON Encapsulation Method Port),用于承载不同类型的业务。GEM Port是业务最小承载单位,每个GEM Port都有一个唯一的GEM Port ID,用于区分不同的业务 [^2]。ONU接收到该消息后,发送Registration Confirm消息给OLT,确认注册信息。 ### 配置阶段 注册成功后,OLT会通过OMCIONU Management and Control Interface)协议对ONU进行配置,包括业务带宽分配、QoS策略设置、安全参数配置等。ONU接收到配置信息后,根据配置要求进行相应的参数设置,并返回配置结果给OLT。 以下是一个简单的Python代码示例,用于模拟ONU注册流程中的部分消息交互: ```python class OLT: def __init__(self): self.onu_list = [] def send_discovery_gate(self): print("OLT发送Discovery Gate消息") def receive_discovery_report(self, onu): print(f"OLT接收到ONU {onu.id} 的Discovery Report消息") self.onu_list.append(onu) self.send_range(onu) def send_range(self, onu): print(f"OLT为ONU {onu.id} 发送Range消息") def receive_range_response(self, onu): print(f"OLT接收到ONU {onu.id} 的Range Response消息") self.send_registration_gem_port(onu) def send_registration_gem_port(self, onu): print(f"OLT为ONU {onu.id} 发送Registration GEM Port消息") def receive_registration_confirm(self, onu): print(f"OLT接收到ONU {onu.id} 的Registration Confirm消息,注册成功") class ONU: def __init__(self, id): self.id = id def receive_discovery_gate(self): print(f"ONU {self.id} 接收到Discovery Gate消息") self.send_discovery_report() def send_discovery_report(self): print(f"ONU {self.id} 发送Discovery Report消息") def receive_range(self): print(f"ONU {self.id} 接收到Range消息") self.send_range_response() def send_range_response(self): print(f"ONU {self.id} 发送Range Response消息") def receive_registration_gem_port(self): print(f"ONU {self.id} 接收到Registration GEM Port消息") self.send_registration_confirm() def send_registration_confirm(self): print(f"ONU {self.id} 发送Registration Confirm消息") # 模拟注册流程 olt = OLT() onu = ONU(1) olt.send_discovery_gate() onu.receive_discovery_gate() olt.receive_discovery_report(onu) onu.receive_range() olt.receive_range_response(onu) onu.receive_registration_gem_port() olt.receive_registration_confirm(onu) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值