Cable Modem RF Online

来源:互联网 发布:自己录制电台软件 编辑:程序博客网 时间:2024/05/26 17:48

Cable Modem RF Online

CM上线流程介绍

CM上电启动后,RF端和CMTS进行交互,来获取RF端(wan口)的IP地址以及CM的相关配置信息

下行通道扫描

1. 扫描下行通道,与CMTS建立同步。CM上电后,开始不断调整自己的下行接收频率来搜索下行信号,直到得到某个下行通道的SYNC帧,判断该下行通道是可用后设置该下行通道DS(Downstream Channel)为Primacy Downstream Channel

确定Service Group,同时测距

2. 确定CM的Service Group,同时进行测距

2.1 如果在DS收到MDD(Mac Domain Description)消息,开始DOCSIS3.0的初始化:通过读取MDD中的信息来确定MD-DS-SG(Mac Domain Downstream Service Group)和MD-US-SG(Mac Domain Upstream Service Group),然后通过发送单播的方式进行Range

2.2 如果没有收到MDD,开始DOCSIS2.0的初始化:通过UCD(Upstream Channel Description)来获取上行通道的信息,然后使用广播的方式进行Range

EAE

3. 如果在MDD中有开启EAE(Early Authentication and Encryption)功能,开始进行认证操作

完成IP层连接

4. 初始化IP过程。通过配置和MDD的消息确定CM的Ip模式(IPv4 Only, IPv6 Only, Alternativ Provision Mode, Dual-stack Provision Mode),然后通过DHCPv4/DHCPv6来获取IP

确定IP模式

  • 如果没有设置docsis相关的mib,根据MDD来确定
    • 在Primary DS收到MDD,根据MDD TLV 5.1的设置来确定
    • 没有收到MDD, cm默认使用IPv4
  • 如果设置docsis相关的mib值(docsIf3CmMdCfgEntry),则根据该值来决定
    • ipv4
    • ipv6
    • honor mdd

同时docsIf3CmMdCfgIpProvModeResetOnChange这个mib用来决定在docsIf3CmMdCfgEntry改变时候是否自动进行调整(默认是false-2)

以下附上以上两个docsis mib的oid

docsIf3CmMdCfgEntry: 1.3.6.1.4.1.4491.2.1.20.1.31.2.2docsIf3CmMdCfgIpProvModeResetOnChange:  1.3.6.1.4.1.4491.2.1.20.1.31.3.2

IPv4 Only模式

IPv6模式

APM

DPM

5. 建立ToD,同ToD server获取时间。同时同TFTP server获取到当前CM的配置文件

向CMTS开始注册

6. 开始Register,完成到CMTS的注册过程

BPI

7. 运行BPI,进行安全加密

CM Mac Management Message

CM和CMTS进行交互的信息在Mac层就已经处理了,和上层无关。要研究之间的交互,就必须了解相关的Mac层的数据结构

Mac Frame

Mac包的头结构:

Mac Frame结构各字段说明:

FC中各字段含义说明:

Mac Specific Header

CM在上线以及以后和CMTS相互沟通的时候,使用的Management数据包的FC/FC_TYPE的值就是11。

在CM MAC Header后,跟上相应的Management Header

Management交互的信息不同,使用的type,version也相应不一样:

代码实现

在系统启动后,CM就会开始扫描CMTS的下行的SYN包来同步,进而能够上线。

这个过程中,会经历以下几个步骤:

1. 在BcmBfcSystem::Initialize中,建立BcmCmDocsisCtlThread线程。之后线程在等待事件中开始睡眠,直到有事件发生将他唤醒。这个线程在系统运行过程中负责处理和CMTS的交互信息

2. 在BcmBfcSystem::Start中,发送Start事件给BcmCmDocsisCtlThread线程,开始Scan动作

3. 对于CMTS发送的MacMgtMsg信息,由注册到DQM的DocsisCmHalControlThread线程来负责从DQM中接受,然后整理后复制一份数据发送给BcmCmDocsisCtlThread,同时唤醒后者进行处理

4. 对于其他控制信息,(比如console发送的跳频、锁频,以及其他等待过程发生的时间片到期等)都会发送相应的事件到BcmCmDocsisCtlThread线程中,由BcmCmDocsisCtlThread线程来负责调用不同函数进行处理

0 0
原创粉丝点击