声明:原创作品,严禁用于商业目的。 本系列文章将全面剖析以Bcm33xxx芯片开发Cablemodem产品的SDK源码为例,从编译系统到各个功能模块进行分析与探讨。

文章目录

  • 0.写在前篇
  • 1. DHCP Server概览
    • 1.2 DHCP Request请求包流程
    • 1.2 DHCP SERVER配置过程
  • 2. DHCP SERVER启动过程
    • 2.1 系统类
    • 2.2 系统初始化
    • 2.3 DHCP Server初始化
  • 3. DHCP SERVER相关源码文件
    • 3.1 IpHelpers
    • 3.2 eRouter
  • 4. DHCP GUI设置的过程

0.写在前篇

本系列文章来自于博通公司相关项目开发中的学习资料和开发总结,是企业或者公司项目开发过程中必备的网络相关知识,主要涉及到ecos和linux系统编译、内存管理、接口管理、HAL抽象层、以及IPV6、DHCP、TR069等网络相关协议。为维护版权和相关知识产权,请购买官方SDK和相关服务,此系列文章仅为个人学习使用,如有不妥之处和技术相关知识,请私信留言!
博通Broadcom SDK源码学习与开发1——SDK源码探究与Cable Modem 系统编译
博通Broadcom SDK源码学习与开发2——Bootloader功能和编译过程
博通Broadcom SDK源码学习与开发3——Cable Modem Docsis3.0
博通Broadcom SDK源码学习与开发4——ECOS系统数据流
博通Broadcom SDK源码学习与开发5——ECOS系统层剖析
博通Broadcom SDK源码学习与开发6——支持Linux系统
博通Broadcom SDK源码学习与开发7——HAL硬件抽象层分析
博通Broadcom SDK源码学习与开发8——内存与参数管理
博通Broadcom SDK源码学习与开发9——Interface接口管理
博通Broadcom SDK源码学习与开发10——Cable Modem IPv6地址
博通Broadcom SDK源码学习与开发11——Cable Modem DHCP管理
博通Broadcom SDK源码学习与开发12终结篇——TR069网管协议
本文介绍 Cable Modem 上DHCP相关的功能。

1. DHCP Server概览

(1) DhcpServerSnoop接收DHCP和ARP包,并向DhcpServerThread发送消息:AnnounceDhcpPacket,AnnounceArpPacket;
(2) DhcpServerThread接收到消息,调用DhcpServerIf类解析数据包,管理Timer定时事件;
(3) DhcpServerIf管理DHCP Lease的状态:New, Bound, Zombie,并向BcmCableHomeDhcpServerIpServiceAppIf发送Lease状态变化的事件;
(4) BcmCableHomeDhcpServerIpServiceAppIf将GUI配置的DHCP地址池范围与DHCP Lease建立对应关系,并根据GUI配置的变化和Lease状态的变化,维护两者的统一关系;

1.2 DHCP Request请求包流程

DHCP Server在接收到DHCP Request后,首先发送Arp Request验证分配的IP地址是否已被占用,如果1s钟内没有Arp响应则认为该IP可以被分配。流程如下:

1.2 DHCP SERVER配置过程

DHCP相关的配置,存储在BcmCdpNonVolSettings类的实例中;

2. DHCP SERVER启动过程

2.1 系统类

系统是BcmEmtaEpsCmDocsisSystem类:

BcmCableHomeDhcpServerIpServiceAppIf在BcmCableHomeCommonApplication中进行初始化,而BcmEpsCmDocsisApplication是BcmCableHomeCommonApplication的子类;

2.2 系统初始化

系统初始化时,CreateApplications,然后逐个调用Applications中的Initialize, Pre/PostDriverInitialize, DeInitialize方法;

2.3 DHCP Server初始化

DHCP Server初始化过程,如下图

3. DHCP SERVER相关源码文件

3.1 IpHelpers

Dhcp: 实现如下类:
DhcpPacket, DhcpLeaseSettings, DhcpOptionsRfc2132;
DhcpClientId/DhcpClientIf/DhcpClientLease/DhcpClientSnoop/DhcpClientThread;
DhcpServerIf/DhcpServerLease/DhcpServerSnoop/DhcpServerThread;
DhcpV6:
如DhcpV4,实现DhcpV6 Client/Server 的 If api, Snoop, Thread等实现DhcpV6基本功能的类;
Cdp: 实现SNMP中WanAddrEntryTable, LanAddrEntryTable 与系统Dhcp Lease的同步;
Dhcp/Server: 实现LanAddrEntry 的注册,查找,更新功能;内容包括与Snmp与NonVol存储及CapEntry之间的同步;

3.2 eRouter

Dhcp/Client: 实现eRouter Wan DhcpV6 Privisioning的功能;
Dhcp/Server: 提供DhcpV6 Server 管理的Api;DhcpV6ServerSettings及其管理功能;

4. DHCP GUI设置的过程

  1. 在GUI -> Basic -> DHCP中同时修改了Starting Local Address, Number of CPEs, Lease Time
  2. 在Handler中:
    2.1 检测到start addr修改了,调用ReconfigureCableHomeDhcpServerService函数进行配置
    2.2 检测到cpe nums修改了,调用ReconfigureCableHomeDhcpServerService函数进行配置
    2.3 检测到lease time修改了,调用ReconfigureCableHomeDhcpServerService函数进行配置
    2.4 Apply后:
    2.4.1 在函数ReconfigureDhcpServerService中会调用ReconfigureCableHomeDhcpServerService函数进行配置
    2.4.2 在函数HandleLanConfigurationChange中也会调用ReconfigureCableHomeDhcpServerService函数进行配置

博通Broadcom SDK源码学习与开发11——Cable Modem DHCP管理相关推荐

  1. 博通Broadcom SDK源码学习与开发3——Cable Modem Docsis3.0

    声明:原创作品,严禁用于商业目的. 本系列文章将全面剖析以Bcm33xxx芯片开发Cablemodem产品的SDK源码为例,从编译系统到各个功能模块进行分析与探讨. 文章目录 0.写在前篇 1. Ch ...

  2. 博通Broadcom SDK源码学习与开发10——Cable Modem IPv6地址

    声明:原创作品,严禁用于商业目的. 本系列文章将全面剖析以Bcm33xxx芯片开发Cablemodem产品的SDK源码为例,从编译系统到各个功能模块进行分析与探讨. 文章目录 0.写在前篇 1. 相关 ...

  3. 博通Broadcom SDK源码学习与开发1——SDK源码探究与Cable Modem 系统编译

    声明:原创作品,严禁用于商业目的. 本系列文章将全面剖析以Bcm33xxx芯片开发Cablemodem产品的SDK源码为例,从编译系统到各个功能模块进行分析与探讨. 文章目录 0.写在前篇 1. 博通 ...

  4. 博通Broadcom SDK源码学习与开发2——Bootloader功能和编译过程

    声明:原创作品,严禁用于商业目的. 本系列文章将全面剖析以Bcm33xxx芯片开发Cablemodem产品的SDK源码为例,从编译系统到各个功能模块进行分析与探讨. 文章目录 0.写在前篇 0.写在前 ...

  5. 博通Broadcom SDK源码学习与开发4——ECOS系统数据流

    声明:原创作品,严禁用于商业目的. 本系列文章将全面剖析以Bcm33xxx芯片开发Cablemodem产品的SDK源码为例,从编译系统到各个功能模块进行分析与探讨. 文章目录 0.写在前篇 1. SD ...

  6. 博通Broadcom SDK源码学习与开发5——ECOS系统层剖析

    声明:原创作品,严禁用于商业目的. 本系列文章将全面剖析以Bcm33xxx芯片开发Cablemodem产品的SDK源码为例,从编译系统到各个功能模块进行分析与探讨. 文章目录 0.写在前篇 1. Op ...

  7. 博通Broadcom SDK源码学习与开发12终结篇——TR069网管协议

    声明:原创作品,严禁用于商业目的. 本系列文章将全面剖析以Bcm33xxx芯片开发Cablemodem产品的SDK源码为例,从编译系统到各个功能模块进行分析与探讨. 文章目录 0.写在前篇 1. TR ...

  8. 博通Broadcom SDK源码学习与开发8——内存与参数管理

    声明:原创作品,严禁用于商业目的. 本系列文章将全面剖析以Bcm33xxx芯片开发Cablemodem产品的SDK源码为例,从编译系统到各个功能模块进行分析与探讨. 文章目录 0.写在前篇 1. 内存 ...

  9. 博通Broadcom SDK源码学习与开发7——HAL硬件抽象层分析

    声明:原创作品,严禁用于商业目的. 本系列文章将全面剖析以Bcm33xxx芯片开发Cablemodem产品的SDK源码为例,从编译系统到各个功能模块进行分析与探讨. 文章目录 0.写在前篇 1. HA ...

最新文章

  1. springmvc+mybatis+spring+redis
  2. sql 导航函数 lead
  3. [css] 有用过scss和sass吗?说说它们之间的区别是什么?
  4. java 1.6.0.11_ubuntu 11.10安装java1.6(转)
  5. Java中常用的6种排序算法详细分解
  6. lede旁路由作用_高频旁路电容器作用及工作原理
  7. MySQL基础命令中文解析
  8. python矩阵所有元素取整_Python主要逻辑基础与处理
  9. golang base64解码编码实现
  10. slideDown和slideUp初始状态设置,使用animate替代
  11. 前端牛客网刷题总结【 JS基础变量、数据类型、数据类型转换、运算符等】
  12. 如何实现微信抢红包算法?
  13. 后台SpringBoot + Mybatis开发遇到的一些坑
  14. 图片转PDF,图片过长智能截取
  15. 域帐号密码快过期邮件提醒
  16. pytorch 定义torch类型数据_PyTorch 使用TorchText进行文本分类
  17. SpringCloud - 服务注册中心
  18. 使用cmd命令笔记本电池查看电池寿命
  19. 那些一个字使劲儿堆的汉字你都认识吗 - 收集
  20. 论文|翻译——行为数据挖掘(持续更新!)

热门文章

  1. 提高软件可靠性的方法和技术
  2. jgit比较项目不同版本间的差异及统计代码总行数
  3. 利用笔记本热点AP功能实现在没有越狱的iPad/iPhone抓包
  4. 拿走不谢!固件逆向分析过程中的工具和技巧(上)
  5. 智能穿戴新方向华米科技血压手表相当于A类血压计申请标准
  6. PHP代码实现反弹shell
  7. Dicom 文件 转成 JPG 格式(批量处理)
  8. 自动下载mnist数据集并解压分类为jpg图片
  9. 多标签分类算法的研究进展
  10. 小桥流水人家(python)